Python-使用无限或有限循环过滤数字

Python-filter numbers by using infinite or finite loops

这是我尝试 "repeatedly reads numbers until the user enters " 完成的一些代码,但我不明白为什么我需要 "While true" 语句使循环无限,以便 运行 "if" 语句。如果我不放 "While true" 语句和 运行 代码,计算机会说“'break' is out of loop”,这让我很困惑。我也想要想知道在什么情况下我们应该在循环中使用"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重复里面的代码,conditionTrue

while True 中,给定的条件是 True 本身,因此它一直重复下去,直到中断 (break).

break 表示“从最外面的循环中退出”,所以如果你在循环外使用 break,它会给你一个错误。

+) 这只是一个提示,但您可以像 count = count + 1 一样使用 count += 1total = total + num 也是如此,比如 total += num

break 语句的目的是停止循环的执行。因此 Python 编程语言要求任何 break 语句都在循环内。因此,如果您省略了 while True 语句,则您的 break 不在循环中并且 Python 正确地声明了一个错误。

使用 while True 循环的原因有很多。一个原因是继续做你的事情,直到一些不寻常的情况发生。您的程序可以检查该情况并在需要时停止。该检查在循环开始时可能很难进行,因此将 while True 与一个或多个 break 语句一起使用允许在循环中的任何一点进行检查。

while True 循环的另一个原因是避免重复语句——Don't Repeat Yourself (DRY) 原则的应用。您的程序可以以不同的方式完成。你可以这样做:

value = input("Enter a value:")
while value != "done":
    # the body of the loop starting with the "try" statement
    value = input("Enter a value:")

这种格式将检查放在循环的开始,因此不需要 Truebreak。这样做的缺点是您现在有两条 input 行完全相同并且需要保持相同。如果您稍后更改代码,您可能很容易更改其中一个 input 而忘记更改另一个,从而在您的代码中引入错误。因此,重复自己被认为是一件坏事。当前的 Python 编程倾向于避免重复并使用 while Truebreak 来避免重复。

出现这个困难是因为程序需要比执行循环多执行一次input语句。循环针对每个常规输入完成,但 input 语句还需要再执行一次以获得最终的 done 输入以停止循环。处理输入数量和循环数量之间的轻微不匹配有点棘手,并且没有完美的解决方案。但是 Python 显然已经选择了 while True...break 方法。值得一提的是,我 40 年前的编程 类 教我们避免 break 技术,因为 goes against "structured programming" principles。但那些日子似乎已经一去不复返了。