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

时间:2018-10-27 10:16:36

标签: python loops infinite-loop

这里有一些我试图“重复读取数字直到用户输入” done”的代码,但是我不明白为什么我需要“ 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)

2 个答案:

答案 0 :(得分:1)

while condition重复内部代码,conditionTrue时。

while True中,给定条件是True本身,因此它会不断重复直到中断(break)。

break的意思是“ 退出外部循环”,因此,如果在循环外部使用break,则会出现错误。

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

答案 1 :(得分:1)

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年前的编程课程教会我们避免使用goes against "structured programming" principles以来的break技术。但是那些日子似乎已经过去。