此函数(playCraps()
)应该选择1到6之间的两个随机整数,将它们相加,并返回True
中保存的False
或x
值。
出于某种原因,每次运行程序时,它总是返回带有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))
为什么会这样?怎么能解决这个问题?
答案 0 :(得分:2)
您始终获得True
,因为即使while
为x
,您的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