编写代码来模拟一个玩家的游戏,并计算完成游戏所需的掷骰子次数。应允许用户指定模拟的游戏数量,并且代码应计算每个游戏的平均掷骰子数。
import random
def diceRoll():
return random.randint (1,6)
userInput = int(input("How many games would you like to play snakes and ladders?"))
totalDiceRolls = 0
for i in range(userInput):
counterPosition = 0
while (counterPosition < 100):
totalDiceRolls += 1
currentDiceRoll = diceRoll()
counterPosition += currentDiceRoll
if counterPosition == 1:
counterPosition = counterPosition + 37
if counterPosition == 4:
counterPosition = counterPosition + 10
if counterPosition == 9:
counterPosition = counterPosition + 22
if counterPosition == 21:
counterPosition = counterPosition + 21
if counterPosition == 28:
counterPosition = counterPosition + 56
if counterPosition == 51:
counterPosition = counterPosition + 16
if counterPosition == 72:
counterPosition = counterPosition + 19
if counterPosition == 80:
counterPosition = counterPosition + 19
if counterPosition == 17:
counterPosition = counterPosition - 10
if counterPosition == 54:
counterPosition = counterPosition - 20
if counterPosition == 63:
counterPosition = counterPosition - 4
if counterPosition == 64:
counterPosition = counterPosition - 4
if counterPosition == 87:
counterPosition = counterPosition - 51
if counterPosition == 92:
counterPosition = counterPosition - 19
if counterPosition == 95:
counterPosition = counterPosition - 20
if counterPosition == 98:
counterPosition = counterPosition - 19
if counterPosition >= 100:
avgRolls = totalDiceRolls / userInput
print("The average number of rolls per game is", avgRolls)
您更改了之前问题/答案的代码中的所有内容,现在它不起作用。
你在里面有循环while
playGame():
,但你while
移到外面,但你没有移动其余的元素。
以前playGame():
返回的掷骰子数,您可以将其添加到totalDiceRolls
totalDiceRolls += playGame()
但是现在playGame()
返回None
并且您会收到错误:
TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType'
工作代码 - 无需playGame()
import random
def diceRoll():
return random.randint (1,6)
userInput = int(input("How many games would you like to play snakes and ladders?"))
totalDiceRolls = 0
for i in range(userInput):
counterPosition = 0 #setting counterposition and diceroll to 0
while (counterPosition < 100):
totalDiceRolls += 1
currentDiceRoll = diceRoll()
print("The currentDiceroll is", currentDiceRoll)
counterPosition += currentDiceRoll
if counterPosition == 1: #all the if statements show what happens if the one player lands on a snake or a ladder
counterPosition = counterPosition + 37
if counterPosition == 4:
counterPosition = counterPosition + 10
if counterPosition == 9:
counterPosition = counterPosition + 22
if counterPosition == 21:
counterPosition = counterPosition + 21
if counterPosition == 28:
counterPosition = counterPosition + 56
if counterPosition == 51:
counterPosition = counterPosition + 16
if counterPosition == 72:
counterPosition = counterPosition + 19
if counterPosition == 80:
counterPosition = counterPosition + 19
if counterPosition == 17:
counterPosition = counterPosition - 10
if counterPosition == 54:
counterPosition = counterPosition - 20
if counterPosition == 63:
counterPosition = counterPosition - 4
if counterPosition == 64:
counterPosition = counterPosition - 4
if counterPosition == 87:
counterPosition = counterPosition - 51
if counterPosition == 92:
counterPosition = counterPosition - 19
if counterPosition == 95:
counterPosition = counterPosition - 20
if counterPosition == 98:
counterPosition = counterPosition - 19
if counterPosition >= 100:
print ("Congratulations end of game")
avgRolls = totalDiceRolls / userInput
print("The average number of rolls per game is", avgRolls)