python:为什么我不循环while循环?

时间:2016-09-21 01:56:16

标签: python python-2.7

无法找到适用于此处问题的任何内容。如果有,请指向我。 无论如何,作为一个新的python,我无法理解为什么我的输出在这里不断重复。

from random import randint
dollars = int(input("How many dollars do you have? "))

maxdollars = dollars
countatmax = 0
count = 0

while dollars > 0:
    count += 1
    diceone = randint(0, 6)
    dicetwo = randint(0, 6)
    if diceone + dicetwo == 7:
        dollars + 4
    else:
        dollars - 1
    if dollars != maxdollars:
        mostdollars = dollars
        countatmax = count
    print "You are broke after " + str(count) + " rolls.\n" + \
          "You should have quit after " + str(countatmax) + \
          " rolls when you had $" + str(maxdollars) + "."

2 个答案:

答案 0 :(得分:2)

是的,就像卡琳所说的那样,你并没有用这些陈述来改变美元的价值:

if diceone + dicetwo == 7:
    dollars + 4
else:
    dollars - 1

因为"美元"永远不会改变,你的while循环将永远循环(美元总是大于零)假设用户输入正值

答案 1 :(得分:0)

在你的代码中,

while dollars > 0: count += 1 diceone = randint(0, 6) dicetwo = randint(0, 6) if diceone + dicetwo == 7: dollars + 4 else: dollars - 1

dollars + 4只是在美元金额上加4。因此,如果初始金额为100美元,那么 dollars + 4 将始终等于104美元。 dollars - 1 也是如此。对于这种情况,它总是等于99美元。

为了更好地理解它,试试这个:dollars = dollars + 4 这将花费之前的美元金额(现在说是104美元),加上4美元,然后将该金额存回自身,更新金额现在为108美元。

由于美元金额从未减少,因此会发生无限循环。

此快捷方式是dollars+=4dollars-=1