Bar*_*oys 8 python loops sentinel
我的任务是使用循环来添加一系列数字,并且该循环需要它的sentinel值0才能停止.然后它应该显示添加的总数.到目前为止,我的代码是:
total = 0
print("Enter a number or 0 to quit: ")
while True:
number = int(input("Enter a number or 0 to quit: "))
print("Enter a number or 0 to quit: ")
if number == 0:
break
total = total + number
print ("The total number is", total)
Run Code Online (Sandbox Code Playgroud)
然而,当我运行它时,我输入后不打印总数0.它只是打印"Enter a number or 0 to quit",虽然它不是一个无限循环.
你的代码是不工作的主要原因是因为break结束最内层的循环(在这种情况下你的while循环)立即,从而突破后你的代码行不会被执行.这可以使用其他人指出的方法轻松修复,但我想建议while稍微改变你的循环结构.目前您正在使用:
while True:
if <condition>:
break
Run Code Online (Sandbox Code Playgroud)
而不是:
while <opposite condition>:
Run Code Online (Sandbox Code Playgroud)
您可能有这样的理由,但是从您提供给我们的代码中看不到它.如果我们更改您的代码以使用后一种结构,那么这将简化程序并解决主要问题.您还可以"Enter a number or 0 to quit:"多次打印,这是不必要的.你可以把它传递给input那就足够了.
total = 0
number = None
while number != 0:
number = int(input("Enter a number or 0 to quit: "))
total += number # Same as: total = total + number
print("The total number is", total)
Run Code Online (Sandbox Code Playgroud)
唯一的"缺点"(只是化妆品)是我们需要number在循环之前定义.
另请注意,我们要total在整个循环结束后打印数字,因此最后的打印是缩进的,并且不会在循环的每个循环中执行while.
| 归档时间: |
|
| 查看次数: |
2040 次 |
| 最近记录: |