我有这个代码,它随机选择列表中的一个项目并按照规则相互匹配。我想重复匹配 N 次,并计算存储在变量 tie 和 diff 中的事件发生了多少次。
问题在于,目前,它重复了 N 次相同的结果,而不是不同的匹配。如果我 sate range(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)
答案 0 :(得分:1)
random.choices
中使用 match
。random.choice
。 random.choices
返回一个类似 ['rock']
的列表,random.choice
将返回元素本身,例如'rock'
。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)