如何执行具有多个条件的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】:

ands 更改为ors。

【讨论】:

@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循环的主要内容,如果未能解决你的问题,请参考以下文章

具有多个条件的C#中的while循环

如何选用forwhiledo while循环

C语言中while语句和do while语句具体是如何循环的?

java介绍while循环

java介绍while循环

while和do-while循环结构