我是python的新手,我一直在尝试制作这个模拟器,为#34;游戏"掷骰子我的教授希望它以最基本的形式制作,这就是有一个功能可以滚动一个骰子而另一个骰子的原因。出于某种原因,我无法让我的simOneGame函数合作,我甚至无法在为其分配变量时打印一个值,尽管它应该打印1或0.这是我的代码:
def main():
x = eval(input("how many games will be played?: "))
y = simNGames(x)
print(y)
def simOneGame():
win = 0
lose = 0
x = rollDice()
if x == 2 or x == 3 or x == 12:
lose += 1
elif x == 7 or x == 11:
win += 1
y = rollDice()
while y != 7 or y != x :
y = rollDice()
if y == x:
win += 1
elif y == 7 :
lose += 1
if win > lose:
return(1)
else:
return(0)
def simNGames(n):
wins = 0
loses = 0
x = simOneGame()
for i in range(n):
if x > 0:
wins += 1
else:
pass
frac = wins / n
return float(frac)
def rollDice():
return rollDie() + rollDie()
def rollDie():
return randrange(1,7)
除非输入一个大于100的数字并且它始终为1.0
,否则我无法得到答案答案 0 :(得分:0)
我在您的代码中看到了几个问题。
首先,您的simNGames
实际上只模拟一个游戏,但随后它会将该游戏的结果加n
次。您需要在循环内移动x = simOneGame()
行,以便重复调用它。
simOneGame
函数的逻辑存在单独的问题。单个掷骰子游戏要么赢了,要么丢失,没有得分。这意味着您不需要添加赢或输值。您应该更改win += 1
执行return 1
的所有地点,而lose += 1
的所有地点应该return 0
(这意味着您可以删除其余的代码也处理win
和lose
变量。)
您也可以考虑返回True
和False
而不是1和0,但这可能是由您的老师决定的,而且它更像是设计风格点而不是错误。
最后,我认为simOneGame
中的while循环需要and
而不是or
才能使逻辑正常工作。