为什么我的python程序即使它不应该保持循环?

时间:2015-04-02 19:09:38

标签: python

我试图制作一个插槽程序,似乎由于某种原因我的程序保持循环,即使它不应该。它工作正常,直到我添加了你的变量。没有足够的话:

Lorem ipsum dolor坐下来,精神上的精神。 Aliquam ac elementum lorem。 Nunc id enim iaculis massa egestas porttitor vitae sed risus。 Aliquam fermentum sem felis,vel tristique massa ultricies et。 Sed m​​attis lectus dui,id suscipit tortor accumsan id。 Phasellus mollis dapibus dolor id eleifend。 Phasellus ex sapien,dictum quis iaculis eu,ornare at massa。 Duis facilisis facilisis lectus,ut viverra magna mattis vitae。

import random

#generate numbers

spinTime = float(random.randint(7, 18))

actualSpin = 0


while(actualSpin != spinTime):
    print("""
         B 7 @
         % # +
         $ J & """)

    actualSpin += 1
    youGot = "Nothing"
    print(" \n"*100)

    print("""
         7 7 7
         # $ J
         & % & """)

    actualSpin += 1
    youGot = "7"
    print(" \n" * 100)

    print("""
         7 % 7
         B B B
         & % & """)

    actualSpin += 1
    youGot = "Bar"
    print(" \n" * 100)

    print("""
         $ # &
         % % %
         J J & """)

    actualSpin += 1
    youGot = "%"
    print(" \n" * 100)

    print("""
         7 + 7
         # $ J
         # # # """)

    actualSpin += 1
    youGot = "#"
    print(" \n" * 100)


    print("""
         7 $ %
         + + +
         B B + """)

    actualSpin += 1
    youGot = "+"
    print(" \n" * 100)


    print("""
         7 $ %
         & & &
         B % + """)

    actualSpin += 1
    youGot = "&"
    print(" \n" * 100)

print("You got a:",youGot)

4 个答案:

答案 0 :(得分:2)

由于你在循环中增加了6次,所以只有当spinTime是6的倍数时,程序才会停止。否则它将永远持续。

为您的循环条件尝试<

while actualSpin < spinTime:

答案 1 :(得分:0)

如果你进行相等比较,你几乎肯定不希望spinTime成为float。请尝试将其保留为int。这样,actualSpin != spinTime在某些时候TruespinTime提供spinTime每次循环仅增加一次(不是:见另一个答案)。

如果您必须使用非整数actualSpin <= spinTime,请与{{1}}进行比较。

答案 2 :(得分:0)

在循环结束时,actualSpin的值在第一次迭代中为7,在第二次迭代中为14,在第三次迭代中为21,依此类推。除非你很幸运并且生成的随机数spinTime714,否则循环将永远持续下去。并且由于您不会使用当前时间对随机数生成器进行播种,因此每次运行它时都会生成相同的数字。

我真的不了解你的程序的逻辑或者你想要做什么,但这是原因为什么它继续循环。

答案 3 :(得分:0)

@xnx和@Jan都有很好的建议。

不应将spinTime强制转换为浮点数。即使它不会影响这种情况,也是不好的形式。

正如@Jan所指出的那样,你需要在每次递增后检查actualSpin的值,否则你有六分之七的机会错过这个数字。

另一种选择是将while循环更改为

    while(actualSpin <= spinTime)

但是,由于先前的问题,这将严重偏向你的while循环中的最后一个选择。