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



以下是我做过的一些代码,它们试图"重复读取数字,直到用户输入"完成",但我不明白为什么我需要"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:")

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

出现这种困难是因为程序需要比执行循环多执行一次input语句。循环是为每个常规输入完成的,但input语句还需要再执行一次,以获得最终的done输入,从而停止循环。处理输入数量和循环数量之间的轻微不匹配有点棘手,而且没有完美的解决方案。但Python显然已经决定使用while True...break方法。值得一提的是,40年前我的编程课程教会我们避免使用break技术,因为这违背了"结构化编程"原则。但那些日子似乎已经一去不复返了。

while condition重复内部的代码,conditionTrue

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

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

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

最新更新