gpt4 book ai didi

python - 模拟几轮石头剪刀布

转载 作者:太空宇宙 更新时间:2023-11-04 09:09:45 26 4
gpt4 key购买 nike

我正在尝试实现一个函数,该函数采用整数 n 并模拟玩家 1 和玩家 2 之间的 n 轮石头剪刀布。赢得最多轮次的玩家赢得 n 轮游戏,可能出现平局.该函数应如图所示打印游戏结果。

    >>> simul(1)
Player 1
>>> simul(1)
Tie
>>>simul(100)
Player 2

我想我需要以模块化的方式处理这个问题。换句话说,我需要组合至少 2 个函数,我的问题是我似乎无法弄清楚该怎么做。调用 simul() 函数时如何激活嵌入式函数的结果?

所以我创建了一个函数,通过执行函数 rps(p1, p2) 来模拟游戏 Rock, Paper, Scissors。代码如下:

    def rps(p1,p2):
#tie
if (p1==p2):
return 0
# player 1 wins
elif p1+p2 in ['PR','RS','SP']:
return -1
else:
return 1
# player 2 wins

这是我有点卡住的地方。我需要在执行 simul() 函数时激活这个函数——我该怎么做?到目前为止,我有以下内容:

    def rps(p1,p2):
#tie
if (p1==p2):
return 0
# player 1 wins
elif p1+p2 in ['PR','RS','SP']:
return -1
else:
return 1
# player 2 wins

def choose_rps():
import random
random.choice('RPS')

def simul(n):
p1_wins, p2_wins = 0, 0
for i in range(n):
p1 = choose_rps()
p2 = choose_rps()
result = rps(p1, p2)
if result == -1:
p1_wins += 1
elif result == 1:
p2_wins += 1
if p1_wins > p2_wins:
return 'Player 1'
elif p1_wins == p2_wins:
return 'Tie'
else:
return 'Player 2'

最佳答案

要“激活”一个函数,您只需调用它。例如:

def simul(n):
score = 0
for i in range(n):
p1 = choose_rps()
p2 = choose_rps()
result = rps(p1, p2)
score += result
if score < 0:
print('Player 1')
elif score == 0:
print('Tie')
else:
print('Player 2')

当然,您需要编写 choose_rps 函数(randomly chooses 并返回 RP 之一S)——但是,如您所见,您只需像调用 rps 函数一样调用它。


将它们全部放在一个脚本中:

def rps(p1, p2):
# ... your code here

def choose_rps():
# implement this here

def simul(n):
# code from above

然后您可能需要一些东西来驱动它,例如:

if __name__ == '__main__':
import sys
n = int(sys.argv[1]) if len(sys.argv) > 1 else 5
simul(n)

……或者……

while True:
n = int(input('How many trials?')) # raw_input for Python 2.x
simul(n)

如果需要,您可以进一步简化它。例如,您可以将整个循环变成带有生成器表达式的 sum 调用:

def simul(n):
score = sum(rps(choose_rps(), choose_rps()) for _ in range(n))

关于python - 模拟几轮石头剪刀布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com