添加数字并使用哨兵退出
Add numbers and exit with a 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"
,尽管它不是无限循环。
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)
如果数字为 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)
您应该在循环内对数字求和,即使它们不是零,但在循环结束后打印总数,而不是在循环内:
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)
你已经很接近了,但是你有一些缩进问题。
首先,为什么所有这些 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
您的代码不工作的主要原因是因为 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)
唯一的"downside"(只是装饰品)是我们需要在循环之前定义number
。
还要注意我们要在整个循环结束后打印total
数字,因此最后的打印是无缩进的,不会在while
循环的每个循环。
我的作业是使用循环将一系列数字相加,该循环需要标记值 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"
,尽管它不是无限循环。
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)
如果数字为 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)
您应该在循环内对数字求和,即使它们不是零,但在循环结束后打印总数,而不是在循环内:
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)
你已经很接近了,但是你有一些缩进问题。
首先,为什么所有这些 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
您的代码不工作的主要原因是因为 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)
唯一的"downside"(只是装饰品)是我们需要在循环之前定义number
。
还要注意我们要在整个循环结束后打印total
数字,因此最后的打印是无缩进的,不会在while
循环的每个循环。