如何执行具有多个条件的while循环
Posted
技术标签:
【中文标题】如何执行具有多个条件的while循环【英文标题】:How to do while loops with multiple conditions 【发布时间】:2011-01-09 22:12:25 【问题描述】:我在 python 中有一个 while 循环
condition1=False
condition1=False
val = -1
while condition1==False and condition2==False and val==-1:
val,something1,something2 = getstuff()
if something1==10:
condition1 = True
if something2==20:
condition2 = True
'
'
我想在所有这些条件都为真时跳出循环,上面的代码不起作用
我原来有
while True:
if condition1==True and condition2==True and val!=-1:
break
这行得通,这是最好的方法吗?
谢谢
【问题讨论】:
您能否澄清“上面的代码不起作用”的意思。当你在 while 语句中有条件时会发生什么? 您好,如果满足任何条件,则代码的第一个位会中断,我想在所有条件都满足时中断,谢谢 【参考方案1】:将and
s 更改为or
s。
【讨论】:
@SilentGhost:第一个简介中给出的条件(维护循环)几乎是第二个简介中给出的条件的否定(breaks 循环),除了它使用了错误的逻辑运算符。【参考方案2】:while not condition1 or not condition2 or val == -1:
但是你原来使用 if inside of a while True 并没有错。
【讨论】:
【参考方案3】:您是否注意到在您发布的代码中,condition2
从未设置为 False
?这样,你的循环体就永远不会被执行。
另外,请注意,在 Python 中,not condition
优于 condition == False
;同样,condition
优于 condition == True
。
【讨论】:
【参考方案4】:condition1 = False
condition2 = False
val = -1
#here is the function getstuff is not defined, i hope you define it before
#calling it into while loop code
while condition1 and condition2 is False and val == -1:
#as you can see above , we can write that in a simplified syntax.
val,something1,something2 = getstuff()
if something1 == 10:
condition1 = True
elif something2 == 20:
# here you don't have to use "if" over and over, if have to then write "elif" instead
condition2 = True
# ihope it can be helpfull
【讨论】:
【参考方案5】:我不确定它会更好读,但您可以执行以下操作:
while any((not condition1, not condition2, val == -1)):
val,something1,something2 = getstuff()
if something1==10:
condition1 = True
if something2==20:
condition2 = True
【讨论】:
【参考方案6】:像您最初所做的那样使用无限循环。它最干净,您可以根据需要合并许多条件
while 1:
if condition1 and condition2:
break
...
...
if condition3: break
...
...
【讨论】:
以上是关于如何执行具有多个条件的while循环的主要内容,如果未能解决你的问题,请参考以下文章