2017-01-14 18 views
-6

編寫代碼來模擬一名玩家的遊戲並計算完成遊戲所需的擲骰子數。應該允許用戶指定模擬的遊戲數量,並且代碼應該計算每場遊戲擲骰子的平均數量。如何退出while循環 - 當counterPosition> = 100時開始新遊戲

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) 
+0

這個確切的問題不僅僅是在半小時前問過的嗎? – Tagc

+0

是啊哈哈還是不能找出來 – Ben

+0

好吧,playGame不會返回任何東西,所以將其結果添加到數字中是沒有意義的。 – Carcigenicate

回答

0

您更改了上一個問題/答案的代碼中的所有內容,現在不起作用。

你有playGame():while循環裏面但你移動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)