我正在尝试实现不带任何参数的craps()函数,模拟一场掷骰游戏,如果玩家获胜,则返回1,如果玩家输局,则返回0。
这是规则:游戏从玩家投掷一对标准的六面骰子开始。如果玩家总共掷出7或11,则获胜。如果玩家总共掷出2、3或12,则玩家输。对于其他所有掷骰值,玩家将重复掷骰子对,直到再次掷出初始值(在这种情况下她获胜)或7掷骰子(在这种情况下她输掉)
这是我得到的代码。我一直保持0,但找不到错误的地方。
def craps():
''' () -> int
Return 1 if the player won and 0 if the player lost.
>>> craps()
0
>>> craps()
1
>>> craps()
1
'''
import random
dice = random.randrange(1, 7) + random.randrange(1, 7)
if dice == 2 or dice == 3 or dice == 12:
return 0
elif dice == 7 or dice == 11:
return 1
else:
dice1 = random.randrange(1, 7) + random.randrange(1, 7)
while dice1 != dice or dice1 != 7:
dice1 = random.randrange(1, 7) + random.randrange(1, 7)
if dice1 == dice:
return 1
elif dice1 == 7:
return 0
当我调用craps()时,我总是得到0。
答案 0 :(得分:1)
干得好,您非常亲密。我发现了你的问题,那是你的发言。因为骰子是复数的,所以我采取了使您的程序更具可读性的自由。我也将导入随机数从craps()函数中移出了。我添加了打印内容只是为了进行错误检查:
#Return 1 if the player won and 0 if the player lost.
import random
def craps():
die1 = random.randrange(1,7)
die2 = random.randrange(1,7)
dice = die1 + die2
if dice == 2 or dice == 3 or dice == 12:
return 0
elif dice == 7 or dice == 11:
return 1
else:
die1 = random.randrange(1, 7)
die2 = random.randrange(1, 7)
dice2 = die1 + die2
while dice2 != dice and dice2 != 7:
die1 = random.randrange(1, 7)
die2 = random.randrange(1, 7)
dice2 = die1 + die2
if dice2 == dice:
return 1
elif dice2 == 7:
return 0
print(str(craps()))