Python:无法让它循环回到我想要的地方

时间:2013-11-30 22:33:58

标签: python loops while-loop add

当用户输入总数大于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:   

2 个答案:

答案 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。