添加数字并退出哨兵

时间:2015-10-17 14:16:21

标签: python loops 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)

然而,当我运行它时,在我输入0后它不会打印总数。它只打印"Enter a number or 0 to quit",虽然它不是无限循环。

5 个答案:

答案 0 :(得分:6)

您的代码无效的主要原因是因为break结束了最里面的循环(在本例中是您的while循环)立即,因此您的代码行结束了休息时间不会被执行。 这可以使用其他人指出的方法轻松修复,但我建议稍微更改while循环的结构。 目前您正在使用:

while True:
    if <condition>:
        break

而不是:

while <opposite condition>:

您可能有这样的理由,但是从您提供给我们的代码中看不到它。 如果我们更改您的代码以使用后一种结构,那么这将简化程序并解决主要问题。 您还可以多次打印"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)

唯一的“缺点”(只是化妆品)是我们需要在循环之前定义number

另请注意,我们要在整个循环完成后打印total数字,因此最后的打印是未缩进的,并且不会在{的每个循环执行{1}}循环。

答案 1 :(得分:3)

你应该对循环内的数字求和,即使它们不是零,但是在循环结束后打印总数,而不是在其中:

total = 0
while True:
    number = int(input("Enter a number or 0 to quit: "))
    total = total + number
    if number == 0:
        break

print ("The total number is", total)

答案 2 :(得分:2)

total = 0
while True:
    number = int(input("Enter a number or 0 to quit: "))
    if number == 0:
        break

    total = total + number

print("The total number is", total)

如果您将break放在其他代码之前,那么循环将结束,而break之后的代码将无法运行。

顺便说一句,如果用户没有输入数字,您可以使用try...except来捕获错误:

total = 0
while True:
    try:
        number = int(input("Enter a number or 0 to quit: "))
    except ValueError:
        print('Please enter a number')
        continue

    if number == 0:
        break

    total = total + number

print("The total number is", total)

答案 3 :(得分:2)

如果数字为0,那么你要做的第一件事是break,这将结束循环。

你也没有将数字添加到总数中,除非它是0,这不是你所追求的。

while True:
    number = int(input("Enter a number or 0 to quit: "))
    total = total + number
    if number == 0:
        break
print ("The total number is", total)    

答案 4 :(得分:2)

你很近,但你有一些缩进问题。

首先,为什么所有这些print陈述?我猜你在输入之前试图打印它。为此,下面的行就足够了。

number = int(input("Enter a number or 0 to quit: "))

其次,区分您想要做什么,何时只有number==0和每次迭代时做什么。

您希望在每次迭代中使用以下指令,因为您希望使用total添加每个数字。因此,请将其保留在if阻止之外。

total = total + number

number==0时,您首先需要print某事,然后break循环。

if number == 0:
        print ("The total number is", total)
        break

确保首先添加total,然后检查if条件,因为一旦中断了循环,您就无法在以后添加该数字。

所以,解决方案可能就是这样,

total = 0
while True:
    number = int(input("Enter a number or 0 to quit: "))
    total = total + number
    if number == 0:
        print ("The total number is", total)
        break