У меня есть некоторое время цикл в Python
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 not condition1 or not condition2 or val == -1:
Но в вашем оригинале не было ничего плохого использования, если внутри некоторое время.
Я не уверен, что это будет читать лучше, но вы могли бы сделать следующее:
while any((not condition1, not condition2, val == -1)):
val,something1,something2 = getstuff()
if something1==10:
condition1 = True
if something2==20:
condition2 = True
Вы заметили, что в выпуске кода
никогда не устанавливается false
? Таким образом, ваш корпус петлей никогда не выполняется.
Также обратите внимание, что в Python не условие
является предпочтительным для условия == false
; Аналогичным образом, условие
предпочтительно для условия == true
.
Используйте петлю Infinity, как то, что вы изначально сделали. Его чистый, и вы можете включить много условий, как вы хотите
while 1:
if condition1 and condition2:
break
...
...
if condition3: break
...
...