Python - while循环三个条件

时间:2015-12-09 19:48:53

标签: python python-2.7 while-loop

我正在尝试使用多个条件进行while循环:

$scope

如果我只放两个条件,代码打印“嘿”,但如果我放三个条件(已经验证,因为我打印条件之前测试它是否为真),而不是打印。

我在stackoverflow上搜索其他问题,但没有解决我的问题。

有什么想法吗?请。

3 个答案:

答案 0 :(得分:1)

condition2为5,y为4。

所以condition2 > y是真的。

所以not condition2 > y是假的。

所以not condition == 1 and not condition1 > x and not condition2 > y是假的。

因此while循环不会运行。

顺便说一句,您的代码中还有两个问题:

  1. while循环的第一行缺少分号
  2. 如果while循环运行一次,它将永远不会停止。您可能只想使用if来执行该块一次。

答案 1 :(得分:1)

如果您稍微重新构建它,您的代码可能会更具可读性。使用DeMorgan's laws,我们not A and not B and not Cnot (A or B or C)相同。由于A or B or Cany([A,B,C])相同,我们可以将您的第一个while重写为

while not any([ condition == 1, 
                condition1 > x, 
                condition2 > y ]):
   print("Hey")

我们可以立即看到为什么循环没有运行,因为其中一个是True。即condition1(即3)大于x(即2)。

同样,如果我们将第二个while循环重写为

while not any([ condition == 1,
                condition1 > x ]):
   print("Hey") 

由于condition等于1,因此它在第一个谓词上失败。即使condition不等于1,condition1(即3)也大于x(即2)。所以第二个谓词也失败了。

答案 2 :(得分:0)

condition=1并且您在指定not condition==1的程序中将返回false,因此while将评估为false。这就是没有产出的原因 同样地,所有其他人都评估为false,因为您在每次检查之前放置了not,整个语句都是整个false