我试着模拟n个垃圾游戏。代码对我来说似乎很有意义,但我从来没有得到正确的结果。例如,如果我输入n=5,即5局,则胜负总和大于5。
它的工作原理如下:如果初始掷骰是2、3或12,则玩家会输。如果掷骰子是7或11,则玩家获胜。任何其他初始滚动都会导致玩家再次滚动。他一直滚动,直到滚动到7或初始滚动的值。如果他在掷7之前重新掷初始值,那就是胜利。先滚7分是输的。
from random import randrange
def roll():
dice = randrange(1,7) + randrange (1,7)
return dice
def sim_games(n):
wins = losses = 0
for i in range(n):
if game():
wins = wins + 1
if not game():
losses = losses + 1
return wins, losses
#simulate one game
def game():
dice = roll()
if dice == 2 or dice == 3 or dice == 12:
return False
elif dice == 7 or dice == 11:
return True
else:
dice1 = roll()
while dice1 != 7 or dice1 != dice:
if dice1 == 7:
return False
elif dice1 == dice:
return True
else:
dice1 = roll()
def main():
n = eval(input("How many games of craps would you like to play? "))
w, l = sim_games(n)
print("wins:", w,"losses:", l)
别这样做
结果一点也不好。
在这个代码中
你给
game()
打两次电话,所以你就在那里玩两个游戏。你想要的是一个else块:顺便说一下,您可以使用
in
简化逻辑:代码与您给出的描述完全一致。
问题在于
相反,应该是
在代码中,模拟的是两个游戏而不是一个(通过调用
game()
两次)。这给出了四个可能的结果,而不是两个(赢/输),给出了不一致的总体结果。相关问题 更多 >
编程相关推荐