[英]How do I print these return values from function in Python 3?
我有一個關於raquetball模擬的家庭作業。 我正在試圖弄清楚如何擴展程序以解決關閉並返回每個玩家的數量。 我在simNGames()中添加了一個循環來計算關閉。 我想返回這些值並在摘要中打印出來。
def simNGames(n, probA, probB):
winsA = 0
winsB = 0
shutoutA = 0
shutoutB = 0
for i in range(n):
scoreA, scoreB = simOneGame(probA, probB)
if scoreA > scoreB:
winsA = winsA + 1
else:
winsB = winsB + 1
for i in range(n):
scoreA, scoreB = simOneGame(probA, probB)
if scoreA == 15 and scoreB == 0:
shutoutA = shutoutA + 1
if scoreA == 0 and scoreB == 15:
shutoutB = shutoutB + 1
return winsA, winsB, shutoutA, shutoutB ## The program breaks when I add
## shutoutA, and shutoutB as return val
如果有人能引導我朝着正確的方向前進,我將不勝感激。 我得到一個ValueError:當我將返回值添加到返回值時,解包(預期為2)的值太多了。 這是整個計划:
from random import random
def main():
probA, probB, n = GetInputs()
winsA, winsB = simNGames(n, probA, probB)
PrintSummary(winsA, winsB)
def GetInputs():
a = eval(input("What is the probability player A wins the serve? "))
b = eval(input("What is the probablity player B wins the serve? "))
n = eval(input("How many games are they playing? "))
return a, b, n
def simNGames(n, probA, probB):
winsA = 0
winsB = 0
shutoutA = 0
shutoutB = 0
for i in range(n):
scoreA, scoreB = simOneGame(probA, probB)
if scoreA > scoreB:
winsA = winsA + 1
else:
winsB = winsB + 1
for i in range(n):
scoreA, scoreB = simOneGame(probA, probB)
if scoreA == 15 and scoreB == 0:
shutoutA = shutoutA + 1
if scoreA == 0 and scoreB == 15:
shutoutB = shutoutB + 1
return winsA, winsB
def simOneGame(probA, probB):
serving = "A"
scoreA = 0
scoreB = 0
while not gameOver(scoreA, scoreB):
if serving == "A":
if random() < probA:
scoreA = scoreA + 1
else:
serving = "B"
else:
if random() < probB:
scoreB = scoreB + 1
else:
serving = "A"
return scoreA, scoreB
def gameOver(a, b):
return a == 15 or b == 15
def PrintSummary(winsA, winsB):
n = winsA + winsB
print("\nGames simulated:", n)
print("Wins for A: {0} ({1:0.1%})".format(winsA, winsA/n))
print("Wins for B: {0} ({1:0.1%})".format(winsB, winsB/n))
if __name__ == '__main__': main()
當你調用這個函數時:
winsA, winsB = simNGames(n, probA, probB)
你只期望兩個值(winsA,winsB),但返回四個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.