python模拟石头剪纸
我想编写一个函数simul(),它接受一个整数,并在Player1和Player2之间模拟n轮石头、布和剪刀。赢得最多回合的玩家将赢得n轮比赛,可能会出现平局 例如: 模拟(1) 玩家1 模拟(1) 系 模拟(100) 玩家2 我写过:python模拟石头剪纸,python,simulation,Python,Simulation,我想编写一个函数simul(),它接受一个整数,并在Player1和Player2之间模拟n轮石头、布和剪刀。赢得最多回合的玩家将赢得n轮比赛,可能会出现平局 例如: 模拟(1) 玩家1 模拟(1) 系 模拟(100) 玩家2 我写过: 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':
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')
def rps():
lst['R','P','S']
p1=随机选择(lst)
p2=随机选择(lst)
如果p1+p2=='RS'或p1+p2=='PR'或p1+p2=='SP':
返回'-1'
如果p1+p2=='RP'或p1+p2=='PS'或p1+p2=='SR':
返回“1”
其他:
返回“0”
def模拟(n):
总数=0
对于范围(n)中的i:
如果rps()==-1:
总数+=-1
elif rps()==1:
总数+=1
其他:
总数+=0
如果函数rps()
中的total,则返回字符串,但在函数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使用“单引号”
、“双引号”
和“三引号”
来识别字符串。在函数rps()
中返回字符串,但在函数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使用“单引号”
、“双引号”
和“三引号”
来识别字符串。您有两个问题。首先是返回字符串:
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'
但将结果与整数进行比较:
if rps()==-1:
total+=-1
elif rps()==1:
total+=1
else:
total+=0
整数不等于其文本表示形式。从rps
返回整数,而不是字符串
第二个问题是,在simul
中,如果未执行rps()==-1
分支,则为第二次检查模拟另一轮播放:
if rps()==-1:
total+=-1
elif rps()==1:
total+=1
在循环的每次迭代中模拟一轮,并在两次检查中使用该轮的结果:
for i in range(n):
result = rps()
if result == -1:
total += -1
elif result == 1:
total += 1
else:
total += 0
你有两个问题。首先是返回字符串:
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'
但将结果与整数进行比较:
if rps()==-1:
total+=-1
elif rps()==1:
total+=1
else:
total+=0
整数不等于其文本表示形式。从rps
返回整数,而不是字符串
第二个问题是,在simul
中,如果未执行rps()==-1
分支,则为第二次检查模拟另一轮播放:
if rps()==-1:
total+=-1
elif rps()==1:
total+=1
在循环的每次迭代中模拟一轮,并在两次检查中使用该轮的结果:
for i in range(n):
result = rps()
if result == -1:
total += -1
elif result == 1:
total += 1
else:
total += 0
可能的重复不是重复。这两个问题唯一的共同点是石头剪刀。从添加一些调试行开始。你的流往哪里去了,rps调用做了什么,你做了多少次,为什么总是返回tie:是因为rps()总是返回“0”,还是因为其他原因,等等。可能的重复不是重复。这两个问题唯一的共同点是石头剪刀。从添加一些调试行开始。你的流往哪里去了,rps调用做了什么,你做了多少次,为什么总是返回平局:是因为rps()总是返回“0”,还是因为其他原因,等等。