这里有一些我试图“重复读取数字直到用户输入” 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)
答案 0 :(得分:1)
while condition
重复内部代码,当condition
为True
时。
在while True
中,给定条件是True
本身,因此它会不断重复直到中断(break
)。
break
的意思是“ 退出外部循环”,因此,如果在循环外部使用break
,则会出现错误。
+)这只是一个提示,但您可以像使用count += 1
一样使用count = count + 1
! total = 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:")
此格式将检查放在循环的开始,因此不需要True
或break
。这样做的缺点是,您现在有两条完全相同的input
行,需要保持相同。如果您以后更改代码,则可以轻松地更改其中input
之一,而忘记更改另一个,从而在代码中引入了错误。因此,重复自己被认为是一件坏事。当前的Python编程更喜欢避免重复,并使用while True
和break
来避免重复。
出现此困难的原因是,程序需要比执行循环多执行一次input
语句。循环是为每个常规输入完成的,但是input
语句也需要再执行一次才能获得最终的done
输入以停止循环。处理输入数量和循环数量之间的轻微不匹配有些棘手,并且没有完美的解决方案。但是Python显然已经选择了while True...break
方法。无论如何,我40年前的编程课程教会我们避免使用goes against "structured programming" principles以来的break
技术。但是那些日子似乎已经过去。