Random.randint不在Python中生成随机数

时间:2016-02-13 20:28:19

标签: python if-statement random while-loop

此函数(playCraps())应该选择1到6之间的两个随机整数,将它们相加,并返回True中保存的Falsex值。
出于某种原因,每次运行程序时,它总是返回带有7或11的True

import random

wins = [7, 11]
losses = [2, 3, 12]

def playCraps():
    x = 0 
    while x == 0:
       sumDice = random.randint(1,6) + random.randrange(1,6) 
       if sumDice in wins:
           x = True 
       elif sumDice in losses:
           x = False 
       else:
           sumDice = 0 
print("The sum of the dice was " + str(sumDice)) 
print("So the boolean value is " + str(x))

为什么会这样?怎么能解决这个问题?

2 个答案:

答案 0 :(得分:2)

您始终获得True,因为即使whilex,您的False循环也会执行。 0是Python中的 falsy 值。例如:

>>> x = False
>>> if x == 0:
        print 'x == 0 is falsy'
x == 0 is falsy

所以你的循环最终会给True无论如何。一个可能的解决方案是定义:

x = False 
while not x:
    ...

答案 1 :(得分:0)

while x == 0:等于x之前,您不会退出True循环。 因为0 == x