Числа Python-фильтра с использованием бесконечных или конечных циклов - PullRequest
0 голосов
/ 27 октября 2018

Вот некоторые коды, которые я сделал, пытаясь «многократно считывать числа, пока пользователь не введет« готово », но я не понимаю, почему мне нужно выражение« Пока верно », чтобы сделать цикл бесконечным, чтобы запустить« если »». Если я не поставлю выражение «Пока верно» и не запусту код, компьютер скажет «прерывание вышло из цикла», что меня смущает. Я также хочу знать, при каких обстоятельствах мы должны использовать «пока истина» в цикле? Пожалуйста, помогите. Спасибо!

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)

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Цель оператора 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, поскольку идет вразрез с принципами "структурированного программирования" .Но эти дни, похоже, прошли.

0 голосов
/ 27 октября 2018

while condition повторяет код внутри, , в то время как condition равно True.

В while True данное условие само по себе True, поэтому оно повторяется постоянно и до тех пор, пока не произойдет перерыв (break).

break означает « Выйти из самого внешнего цикла», поэтому, если вы используете break вне цикла, это выдаст вам ошибку.

+) Это всего лишь совет, но вы можете использовать count += 1 для count = count + 1! то же самое относится и к total = total + num, например total += num

...