以下是我做过的一些代码,它们试图"重复读取数字,直到用户输入"完成",但我不明白为什么我需要"While true"语句来使循环无限才能运行"if"语句。如果我不放"While true"语句并运行代码,计算机会说"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)
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年前我的编程课程教会我们避免使用break
技术,因为这违背了"结构化编程"原则。但那些日子似乎已经一去不复返了。
while condition
重复内部的代码,而condition
是True
在while True
中,给定的条件是True
本身,因此它一直重复,直到中断(break
(。
break
的意思是"退出非常外部的循环",因此如果在循环外部使用break
,则会出现错误。
+)这只是一个提示,但您可以使用count += 1
作为count = count + 1
!total = total + num
也是如此,就像total += num
一样