我正在尝试使用多个条件进行while循环:
$scope
如果我只放两个条件,代码打印“嘿”,但如果我放三个条件(已经验证,因为我打印条件之前测试它是否为真),而不是打印。
我在stackoverflow上搜索其他问题,但没有解决我的问题。
有什么想法吗?请。
答案 0 :(得分:1)
condition2
为5,y
为4。
所以condition2 > y
是真的。
所以not condition2 > y
是假的。
所以not condition == 1 and not condition1 > x and not condition2 > y
是假的。
因此while循环不会运行。
顺便说一句,您的代码中还有两个问题:
if
来执行该块一次。答案 1 :(得分:1)
如果您稍微重新构建它,您的代码可能会更具可读性。使用DeMorgan's laws,我们not A and not B and not C
与not (A or B or C)
相同。由于A or B or C
与any([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
。