Лучший способ получить чистый код - разделить на functions
каждую из выполняемых задач, что означает:
1. Запустить игру -> Для каждого броска костей
2. Выполнитьgame -> Чередование игр между A и B, пока первый не получит 6 на кости (здесь, учитывая, что если A получает 6, B даже не нужно играть, поскольку A выиграл)
3. Выполнитьпробная версия -> состоящая из определенного количества игр
4. Запустите основную программу -> состоящая из воспроизведения всего необходимого количества попыток
Итак, ниже приведено одно из возможных решений(здесь вы видите, что моя play
функция уже возвращает результат, то есть выиграл игрок или нет):
import random
def play():
won = True
keepPlaying = False
rollDice = random.choice([1,2,3,4,5,6])
if rollDice == 6:
return won
return keepPlaying
def run_game(winsA, winsB):
while True:
playA = play()
playB = play()
if playA:
winsA += 1
return winsA, winsB
elif playB:
winsB += 1
return winsA, winsB
def run_trial(numGames):
winsA = 0
winsB = 0
for i in range(numGames):
wins = run_game(winsA, winsB)
winsA = wins[0]
winsB = wins[1]
print("winsA:", winsA, "| winsB:", winsB, "| Fraction of A wins:", "{} %".format(winsA / ( winsA + winsB ) * 100))
numTrials = 10
numGames = 10000
for i in range(numTrials):
run_trial(numGames)