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
更新了答案。