python模拟石头剪纸

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':

我想编写一个函数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':
      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”,还是因为其他原因,等等。