当用户输入总数大于2000的数字时,代码应该重置为0,然后继续询问数字,直到总和等于2000.我的代码将总数重置为0但保持为0并且不会将任何用户输入添加到总计中。我知道这是一个循环问题,我只是无法弄清楚如何让它循环回0并重新开始。我故意将“print(total)”作为最后一行代码,以便我可以看到总数发生了什么。
my_list = []
print "Rules of the game, keep adding numbers to get exactly 2000!"
while True:
numbers = raw_input(" Please enter a number: ")
total = 0
for num in numbers.split():
my_list.append(int(num))
for value in my_list:
total += int(value)
if total < 2000:
print "Current total:"
print(total)
elif total == 2000:
print " Congratulations!"
break
elif total > 2000:
total = 0
print "Sorry you went over. Try Again."
print(total)
执行的例子)
Rules of the game, keep adding numbers to get exactly 2000!
Please enter a number: 2002
Sorry you went over. Try Again.
0
Please enter a number: 10
Sorry you went over. Try Again.
0
Please enter a number: 50
Sorry you went over. Try Again.
0
Please enter a number:
答案 0 :(得分:4)
那是因为你每次都把它重置为零。将总变量的去除>>解决它的循环:
total = 0
while True:
numbers = raw_input(" Please enter a number: ")
...etc...
您遇到的另一个问题是value_list保持相同。你不断向它添加数字,然后每轮都添加所有数字。让我们说你在第一轮插入1?所以现在总数也是1。再次添加1,现在总计将 3 而不是2.因为您从最后一轮添加了1轮。因此,不要追加到mylist,只需重新创建每个循环。换句话说 - 将mylist 放在循环中:
total = 0
while True:
numbers = raw_input(" Please enter a number: ")
mylist = []
答案 1 :(得分:0)
elif total > 2000:
total = 0
当您将总计重置为0时,my_list仍包含以前的所有数字 (因此,从这一点开始,你的总数将超过2000) 超过2000。
解决方案:您还必须重置my_list。