Как сделать циклы с условием продолжения с несколькими условиями

У меня есть некоторое время цикл в 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

который работает хорошо, действительно ли это - лучший способ сделать это?

Спасибо

18
задан SilentGhost 27 January 2010 в 11:37
поделиться

5 ответов

Измените и на или .

19
ответ дан 30 November 2019 в 09:03
поделиться
while not condition1 or not condition2 or val == -1:

Но в вашем оригинале не было ничего плохого использования, если внутри некоторое время.

2
ответ дан 30 November 2019 в 09:03
поделиться

Я не уверен, что это будет читать лучше, но вы могли бы сделать следующее:

while any((not condition1, not condition2, val == -1)):
    val,something1,something2 = getstuff()

    if something1==10:
        condition1 = True

    if something2==20:
        condition2 = True
-1
ответ дан 30 November 2019 в 09:03
поделиться

Вы заметили, что в выпуске кода никогда не устанавливается false ? Таким образом, ваш корпус петлей никогда не выполняется.

Также обратите внимание, что в Python не условие является предпочтительным для условия == false ; Аналогичным образом, условие предпочтительно для условия == true .

1
ответ дан 30 November 2019 в 09:03
поделиться

Используйте петлю Infinity, как то, что вы изначально сделали. Его чистый, и вы можете включить много условий, как вы хотите

while 1:
  if condition1 and condition2:
      break
  ...
  ...
  if condition3: break
  ...
  ...
-2
ответ дан 30 November 2019 в 09:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: