在python中,While循环使用多个条件直到满足一个条件

2024-09-25 06:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

原件:

我尝试有一个while循环来检查两个条件,如果一个条件满足就停止。 我的确切需求是这样的

while integer1 AND integer2 > 0:
  # perform calculation and print results at each instance of the loop

重新措辞: 我需要创建一个循环,直到两个数字中的一个变为零,并且这些数字在循环的每次迭代中都会发生变化。在

很抱歉,如果我最初的措辞是混乱的,希望这会更有意义。在


Tags: and数字条件performresultsat原件each
3条回答

我想我们可以用:

while all([x > 0 for x in a,b,c]):
    be_happy()

。。。换句话说,您可以使用一个列表理解表达式并测试all()。在

对于只有两个变量,这会有点迟钝。我只需要:

^{2}$

。。。但对于两个以上的,我建议全部。您可以使用如图所示的列表理解,也可以使用生成器表达式,从而:

while all((x>0 for x in (a,b,c))):

。。。如图所示,在这种情况下似乎有必要将元组括在(括号中),而在我对前面的示例的测试中则不需要。在

就我个人而言,我认为清单理解的可读性要稍微高一些。但这可能比什么都主观。在

还请注意,您可以使用any()内建的相当明显的可选语义。在

当您将0以外的整数用作条件时,python假定它们为True,实际上您已经有了,请注意,and(not and)操作数适用于链2条件!公司名称:

while True and integer2 > 0: 

相反,您需要:

^{2}$

但是如果你想做一个循环,直到两个数中的一个变为零,你需要,并且你需要在循环中对你的整数进行判决!在

while integer1 > 0 and integer2 > 0:
   #do stuff
   #for example integer1 -=1
   #integer2 -=1  

上面的答案看起来可以解决您的问题,但是为了解释代码为什么不能工作,AND表达式的两边都被视为单独的条件,并将变为true或false。你不是说“当整数1和整数2都大于零”,而是说,“而整数1不为假,而整数2大于零”。请注意,这是两个独立的条件。在

在右边,当整数2大于0时

integer2 > 0

会变成真的。但是在左边

^{2}$

是整个条件,当它不为零时,它将变成真。见Python Truth Value Testing

相关问题 更多 >