我想编写一个函数 simul(),它接受一个整数并模拟 Player1 和 Player2 之间的 n 轮剪刀石头布。赢得最多回合的玩家赢得 n 轮比赛,平局可能出现。
例子:
simul(1) Player1
simul(1) Tie
simul(100) Player2
我写过:
def rps():
lst['R', 'P', 'S']
p1=random.choice(lst)
p2=random.choice(lst)
if p1+p2=='RS' or p1+p2=='PR' or p1+p2=='SP':
return '-1'
elif p1+p2=='RP' or p1+p2=='PS' or p1+p2=='SR':
return '1'
else:
return '0'
def simul(n):
total=0
for i in range(n):
if rps()==-1:
total+=-1
elif rps()==1:
total+=1
else:
total+=0
if total<0:
print('Player1')
elif total==0:
print('Tie')
else:
print('Player2')
但是,当我运行 simul() 代码时,我得到的唯一结果是“Tie”。我该如何解决??
最佳答案
在函数 rps()
中你返回的是 strings,但是在函数 simul()
中你比较的是 rps()
与整数。
由于您使用的是 -1、0 和 1
,因此您应该返回整数。
def rps():
lst['R', 'P', 'S']
p1=random.choice(lst)
p2=random.choice(lst)
if p1+p2 == 'RS' or p1+p2 == 'PR' or p1+p2 == 'SP':
return -1
elif p1+p2 == 'RP' or p1+p2 == 'PS' or p1+p2 == 'SR':
return 1
else:
return 0
注意:Python使用'single quotes'
, "double quotes"
and """triple quotes"""
识别字符串。
关于python模拟石头剪刀布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23774291/