Python 如何在输出中对列表中的两个元素进行配对?
所以我试着做一个代码来计算两个玩家在测验中的分数差。有第一轮得分和第二轮得分 这就是我到目前为止所做的:Python 如何在输出中对列表中的两个元素进行配对?,python,list,Python,List,所以我试着做一个代码来计算两个玩家在测验中的分数差。有第一轮得分和第二轮得分 这就是我到目前为止所做的: import math option = input ('How many players?: ') playerlist = [] firstroundlist = [] secondroundlist = [] j = 0 while j < option: name = raw_input('Enter player\'s name: ') playerli
import math
option = input ('How many players?: ')
playerlist = []
firstroundlist = []
secondroundlist = []
j = 0
while j < option:
name = raw_input('Enter player\'s name: ')
playerlist.append(name,)
firstround = input ('Enter first round score: ')
firstroundlist.append(firstround,)
secondround = input('Enter second round score: ')
secondroundlist.append(secondround,)
j += 1
y=0
z=1
dis=[]
while z<len(playerlist):
comparison = (firstroundlist[y]+secondroundlist[y])-(firstroundlist[z]+secondroundlist[z])
print playerlist[y], '-', playerlist [z], 'is', comparison
z+=1
z==0
y+=1
问题是,如何修改代码,使其类似于:
Player 1 - Player 2 is #scoredifference
Player 1 - Player 3 is #scoredifference
Player 1 - Player 4 is #scoredifference
Player 1 - Player 2 is #scoredifference
Player 1 - Player 3 is #scoredifference
Player 1 - Player 4 is #scoredifference
Player 2 - Player 3 is #scoredifference
Player 2 - Player 4 is #scoredifference
Player 3 - Player 4 is #scoredifference
import itertools
playernum = int(raw_input('How many players?: '))
players = [(
raw_input('Enter player\'s name: '),
int(raw_input('Enter first round score: ')),
int(raw_input('Enter second round score: ')),
) for i in range(playernum)]
for p,q in itertools.combinations(players, 2):
comparison = (p[1]+p[2])-(q[1]+q[2])
print (p[0] + '-' + q[0] + 'is' + str(comparison))
我应该为你做这件事。显然,用正确的公式替换分数差
我应该为你做这件事。显然,用正确的公式替换分数差
。您正在寻找的:
请注意,您的数据结构不是最优的。您应该使用玩家信息,如下所示:
Player 1 - Player 2 is #scoredifference
Player 1 - Player 3 is #scoredifference
Player 1 - Player 4 is #scoredifference
Player 1 - Player 2 is #scoredifference
Player 1 - Player 3 is #scoredifference
Player 1 - Player 4 is #scoredifference
Player 2 - Player 3 is #scoredifference
Player 2 - Player 4 is #scoredifference
Player 3 - Player 4 is #scoredifference
import itertools
playernum = int(raw_input('How many players?: '))
players = [(
raw_input('Enter player\'s name: '),
int(raw_input('Enter first round score: ')),
int(raw_input('Enter second round score: ')),
) for i in range(playernum)]
for p,q in itertools.combinations(players, 2):
comparison = (p[1]+p[2])-(q[1]+q[2])
print (p[0] + '-' + q[0] + 'is' + str(comparison))
顺便说一下,您当前的代码包含语法错误。而不是
name = raw_input('Enter player's name: ')
你想要:
name = raw_input('Enter player\'s name: ')
另外,您需要的不是input()
(执行任意Python代码!),而是int(raw\u input())
:
请注意,您的数据结构不是最优的。您应该使用玩家信息,如下所示:
Player 1 - Player 2 is #scoredifference
Player 1 - Player 3 is #scoredifference
Player 1 - Player 4 is #scoredifference
Player 1 - Player 2 is #scoredifference
Player 1 - Player 3 is #scoredifference
Player 1 - Player 4 is #scoredifference
Player 2 - Player 3 is #scoredifference
Player 2 - Player 4 is #scoredifference
Player 3 - Player 4 is #scoredifference
import itertools
playernum = int(raw_input('How many players?: '))
players = [(
raw_input('Enter player\'s name: '),
int(raw_input('Enter first round score: ')),
int(raw_input('Enter second round score: ')),
) for i in range(playernum)]
for p,q in itertools.combinations(players, 2):
comparison = (p[1]+p[2])-(q[1]+q[2])
print (p[0] + '-' + q[0] + 'is' + str(comparison))
顺便说一下,您当前的代码包含语法错误。而不是
name = raw_input('Enter player's name: ')
你想要:
name = raw_input('Enter player\'s name: ')
另外,您需要
int(raw\u input())
侧注:不要以这种方式使用while循环,而不是input()
(它执行任意Python代码!)。对范围内的j使用(选项):…
而不是(范围(1,len(playerlist))
用于第二个循环)。旁注:不要这样使用while循环。对范围内的j使用(选项):…
而不是(范围(1,len(playerlist))
用于第二个循环)。这将比较3-3。另外,我认为嵌套的范围(len())
实际上是非音速的。@KurtSpindler谢谢!顺便问一下,你知道如何打印所有分数差异的平均值吗?我建议将所有分数放入一个数组中,然后sum(allScores)/len(allScores)
就可以了!这将比较3-3。另外,我认为嵌套的范围(len())
实际上是非音速的。@KurtSpindler谢谢!顺便问一下,你知道如何打印所有分数差异的平均值吗?我建议将所有分数放入一个数组中,然后sum(allScores)/len(allScores)
就可以了!谢谢但是我得到了这个错误:第9行,在itertools中代表p,q。组合(玩家):类型错误:必需的参数'r'(位置2)没有找到它的意思是什么?哦,对不起,我的错误-我遗漏了我想要的组合数。用,2
更新了答案。谢谢!但是我得到了这个错误:第9行,在itertools中代表p,q。组合(玩家):类型错误:必需的参数'r'(位置2)没有找到它的意思是什么?哦,对不起,我的错误-我遗漏了我想要的组合数。用,2
更新了答案。