Вот несколько кодов, которые я сделал, которые пытались «многократно считывать числа, пока пользователь не вводит« готово », но я не понимаю, зачем мне нужен оператор« Пока верно », чтобы сделать цикл бесконечным для выполнения оператора« if ». Если Я не помещаю оператор «Пока правда» и запускаю код, компьютер скажет «break» вне цикла », что меня смущает. Я также хочу знать, при каких обстоятельствах мы должны использовать« while true »в цикле. ? Пожалуйста, помогите. Спасибо!
count=0
total=0
while True:
value=input("Enter a value:")
if value = = "done":
break
try:
num=float(value)
except:
print("Bad input")
continue
count=count+1
total=total+num
print(total,count,total/count)
while condition
повторяет код внутри, в то время как condition
- это True
.
В while True
данное условие - это сам True
, поэтому он повторяется бесконечно, пока не произойдет перерыв (break
).
break
означает «Убирайся самого внешнего цикла», поэтому, если вы используете break
вне цикла, вы получите ошибку.
+) Это всего лишь подсказка, но вы можете использовать count += 1
, как и count = count + 1
! то же самое касается и total = total + num
, как и total += num
Цель оператора break
- остановить выполнение цикла. Следовательно, язык программирования Python требует, чтобы любой оператор break
находился внутри цикла. Итак, если вы опустите оператор while True
, ваш break
не будет в цикле, и Python правильно объявит об ошибке.
Есть много причин использовать петлю while True
. Одна из причин - продолжать заниматься своим делом, пока не произойдет какое-нибудь необычное обстоятельство. Ваша программа может проверить это обстоятельство и при необходимости остановиться. Эту проверку может быть сложно выполнить в начале цикла, поэтому использование while True
с одним или несколькими операторами break
позволяет выполнять проверку в любой точке цикла.
Еще одна причина возникновения цикла while True
- избежать повторения оператора - применение принципа Не повторяйся (СУХОЙ). Ваша программа могла быть сделана иначе. Вы могли сделать:
value = input("Enter a value:")
while value != "done":
# the body of the loop starting with the "try" statement
value = input("Enter a value:")
Этот формат помещает проверку в начало цикла, поэтому True
или break
не требуются. Это имеет тот недостаток, что теперь у вас есть две абсолютно одинаковые линии input
, которые должны оставаться неизменными. Если вы позже измените свой код, вы можете легко изменить один из этих input
и забыть изменить другой, внося ошибку в свой код. По этой причине повторение самого себя считается плохим занятием. Текущее программирование на Python предпочитает избегать повторения и использовать while True
и break
, чтобы избежать этого.
Эта трудность возникает из-за того, что программе необходимо выполнить оператор input
еще раз, чем выполнить цикл. Цикл выполняется для каждого обычного ввода, но оператор input
также необходимо выполнить еще раз, чтобы получить последний ввод done
, чтобы остановить цикл. Обработка этого небольшого несоответствия между количеством входов и количеством циклов немного сложна, и идеального решения нет. Но Python, очевидно, остановился на методе while True...break
. Как бы то ни было, мои классы программирования 40 лет назад научили нас избегать техники break
после того, как идет вразрез с принципами "структурного программирования". Но те дни, кажется, прошли.
Большое спасибо! Наконец-то я понял, и вы очень хорошо объяснили! Спасибо!!!!
Обычно вам нужно найти сумму нескольких n чисел. Эти n чисел считываются пользователем в каждом цикле, пока пользователь не наберет
'done'
, который разорвет бесконечный цикл.