2016-03-14 2 views
1

Есть или условие работает в цикле while в python? Кажется, я не могу заставить его работать. Это пример того, как работает мой код.или условие во время цикла python

newslot = 3 
moved = False 

while newslot > 0 or moved != True: 
    enabled = query something on the database where slot = newslot 
    if enabled: 
     print 'do something here' 
     moved = True 
    else: 
     newslot-=1 
     print 'slot disabled' 

Поэтому, когда новостной бюллетень получает значение нуля, он все равно переходит внутрь цикла while. Кажется, у меня что-то отсутствует.

+2

Что не работает? Кроме того, что такое значение 'slot'? –

+0

Каковы значения 'slot' и' enabled'? – chepner

+1

'или' работает, но если 'slot is enabled 'равен True, ваш цикл никогда не заканчивается, так как' newslot> 0' остается True –

ответ

3

or работает так, как следовало ожидать. Цикл while будет продолжаться до тех пор, пока его состояние не станет ложным. Если его условие является двумя отдельными условиями, связанными с or, оно будет ложным только в том случае, если оба условия являются ложными.

Ваш цикл будет повторять до тех пор, пока moved ложно и newslot является < = 0. Я предполагаю, что вы на самом деле хотите использовать and в этом случае, как вы хотите, чтобы петля один раз остановить либо условие.

+0

, но это сбивало с толку, я подумал, что когда я использовал 'или', мне не пришлось удовлетворять оба условия, в любом случае спасибо за помощь, я буду использовать 'и' вместо этого. –

+1

@test Цикл while будет продолжаться до тех пор, пока его условие будет истинным. Если у вас есть два условия, связанные с 'или', цикл будет заканчиваться только после того, как оба будут ложными, как если бы один был истинным, тогда все 'или' истинно. – StephenTG

+0

Я вижу, это глупо от меня. Я думал наоборот. Большое спасибо за разъяснение. @StephenTG –

Смежные вопросы