python - 我写了一个简单的石头剪刀布程序,但我想在三个中做到最好,不知道如何将它写到我现有的代码中
问题描述
就像标题所暗示的那样,我是新手,正在努力磨练自己的技能,但我不知道该怎么做……任何帮助将不胜感激。
import random
playerOneWin = ((1,3), (3,2), (2,1))
playerTwoWin = ((3,1), (2,3), (1,2))
tie = ((1,1), (2,2), (3,3))
while True:
roll = random.randint(1,3), random.randint(1,3)
if roll in tie:
print('Tie')
break
elif roll in playerOneWin:
print('Player 1 Wins')
break
elif roll in playerTwoWin:
print('Player 2 Wins')
break
就像我做一个功能?我是否将其写入我的 while 循环?
如果我这样做了怎么办?我该怎么做呢?
解决方案
解决问题的一般建议:
- 想一想一般的解决方案是什么,并细化为一种算法,而不是列出所有可能的结果。
要实现“三局两胜”,即在 2 次处决后以 2-0 停止,请检查任一玩家的得分为 2 并在那里结束。
当然,可以进行进一步的优化,但这会引入一些概念。即:函数、字典、if 语句、f 字符串和 *args 作为函数参数。
我决定在底部显示一些额外的信息,包括总游戏数和平局数。
import random
def winner(p1, p2):
return (3 + p1 - p2) % 3
def score_round():
roll = random.randint(1,3), random.randint(1,3)
w = winner(*roll)
if w == 0:
scores[w] += 1
print('Tie')
return
scores[w] += 1
print(f"Player {w} Wins")
return
num_games = 3
games_to_win = num_games // 2 + 1
games_played = 0
scores = {0:0, 1:0, 2:0}
while True:
score_round()
games_played += 1
if scores[1] == games_to_win or scores[2] == games_to_win:
break
if scores[1] > scores[2]: print(f"Player 1 wins: {scores[1]} - {scores[2]}")
else: print(f"Player 2 wins: {scores[2]} - {scores[1]}")
print(f"Games played: {games_played}, Ties: {scores[0]}")