2013-09-19 5 views
0
# Finicky Counter 
# Demonstrates the break and continue statements 

count = 0 
while True: 
    count += 1 
    # end loop if count greater than 10 
    if count > 10: 
    break 
    # skip 5 
    if count == 5: 
    continue 
    print(count) 

input("\n\nPress the enter key to exit.") 

Почему в этом случае применяется цикл True? Я не понимаю, почему логическое значение оценивает результат подсчета. Неправильный синтаксис:В то время как назначение петли

while count: 

Любая помощь, разъясняющая это, будет оценена по достоинству.

+4

Просто: это не так. 'while True:' петли навсегда. «Разрыв» - это единственное, что остановит этот цикл. –

+0

Почему это петля навсегда, если цикл while не является подсчетным счетчиком? Что же тогда верно? – Zack

+4

'True' - это логическое значение, которое встроено в Python. 'while x:' смотрит на 'x' на каждой итерации, и если' bool (X) 'is' True', то он продолжает цикл, иначе он останавливается. Поскольку 'x' является' True' здесь, 'bool (True)' всегда 'True', и поэтому цикл никогда не останавливается (ну, за исключением чего-то еще, останавливающего его - исключение или оператор' break'). –

ответ

0

Это помогает, если вы будете следовать пошаговому шагу в отладчике (простой идеал, который позволяет это PyScripter).

Всего несколько замечаний:

  • while True является бесконечным циклом. Его можно оставить только с помощью инструкции break или return.
  • поэтому цикл будет работать до тех пор, пока не будет выполнено условие count > 10. Разрыв завершает цикл, и выполняется следующая команда (input ...).
  • , если count == 5, continue говорит, что python должен прыгать сразу в начало цикла без выполнения следующего утверждения (поэтому «5» не напечатано).

Но: выполните код в отладчике!

0

count равно 0, поэтому while count никогда не войдет в цикл, так как 0 является False в булевом контексте.

Python не имеет конструкции, аналогичной repeat ... until (condition), найденной на некоторых других языках. Поэтому, если вы хотите, чтобы цикл всегда начинался, но заканчивался только тогда, когда условие становится истинным, обычный способ сделать это - установить условие только True - что, очевидно, всегда верно, - и затем явно проверить условие внутри петли и разрываются с помощью break.

Чтобы ответить на ваш комментарий, вещь, которая здесь истинна, - это просто значение True, которое, как я сказал, всегда будет иметь место.

0

Синтаксис для цикла while: "Условие." Блок под циклом while выполняется до тех пор, пока условие не примет условие для False или выполняется команда break. «while True» означает, что условие всегда равно True, и цикл не останавливается, если не выполняется перерыв. Это частая идиома python, используемая, поскольку python не имеет do while loop.

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