Python重复一个函数n次会重复同一个函数

2024-03-28 12:49:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,它随机选择列表中的一个项目,并按照规则相互匹配。我想重复匹配N次,并计算变量tie和diff中存储的事件数量

问题是,目前,它重复N次相同的结果,而不是不同的匹配。如果我设定范围(10),它将重复相同的比赛结果10次。我想重复比赛N次,结果不一样

import random

rules = ['rock', 'paper', 'scissors']
pc1 = random.choices(rules)
pc2 = random.choices(rules)
tie = 0
diff = 0

def match():
    if pc1 == pc2:
        return False
        print('tie')
    if pc1 != pc2:
        return True
        print('different') 

for _ in range(10):
    if match() == False:
        tie +=1
    if match() == True:
        diff +=1
    
print(tie, diff)

Tags: 代码falsetrue列表returnifmatchdiff
1条回答
网友
1楼 · 发布于 2024-03-28 12:49:33
  1. 您只需随机选择一次pc1和pc2。要每次从列表中选择随机元素,应在函数match中使用random.choices
  2. 如果要获取元素,应该使用random.choice。当random.choices返回类似['rock']的列表时,random.choice将返回元素本身,例如'rock'
  3. 在for循环中调用函数两次,这会导致random.choice被调用两次,结果可能不同。解决方案是将函数调用结果放入变量(如match_result = match())中,然后在if中进行比较

考虑到这些因素,代码可以如下所示:

import random

rules = ['rock', 'paper', 'scissors']
tie = 0
diff = 0


def match():
    pc1 = random.choice(rules)
    pc2 = random.choice(rules)
    if pc1 == pc2:
        return False
        print('tie')
    if pc1 != pc2:
        return True
        print('different')


for _ in range(10):
    match_result = match()
    if match_result == False:
        tie += 1
    if match_result == True:
        diff += 1

print(tie, diff)

相关问题 更多 >