2013-10-29 4 views
1

기다려주십시오. 필자는 파이썬을 처음 사용하고 불과 1 개월 만입니다.이 proect에서는 관련 점수가있는 이름 목록을 시뮬레이트하는 파일을 가져옵니다. 첫 번째 인덱스와 그 관련 쌍을 출력하는 루프를 만드는 데 어려움을 겪고 있습니다. 내 프로그램은 으로 플레이어 목록을 절반으로 나누고 목록의 각 절반에서 플레이어를 사용하여 쌍을 생성해야합니다. 예를 들어 등급별로 10 명의 플레이어가 정렬 된 경우 플레이어 1은 플레이어 6을, 2는 7을 재생합니다.루프를 사용하여 파이썬에서 인덱스를 쌍으로 만들기

누군가 올바른 방향으로 안내 할 수 있습니까? 샘플 코드는 아래에 있습니다. 일단 완성되면, 이것을 작동 함수가있는 프로그램으로 만들 필요가 있습니다.

def main(): 

    myfile = open('CHESS.txt','r') 

    players = [] 

    for line in myfile: 
     line = line.rstrip('\n') 
     players.append(line) 
     players.sort() 


    for i in players: 
     m=len(players)/2 
     print(players[0], players[0+m]) 


    myfile.close() 

main() 
+1

멋진 트릭은'우편 (선수, 선수 [LEN (플레이어)/2])입니다' –

답변

1

가까운 사이. 목록의 각 요소에 대해 색인 i 만 사용해야합니다.

m=len(players)/2 
for i in range(m): 
    print(players[i], players[i+m]) 

짝수 개의 선수가 있어야한다는 점에 유의하십시오. zip에 대한

+0

이 매우 가깝습니다! 나는 옳은 방향으로 가고있어 기뻐요! 도와 주셔서 정말 감사합니다. – goodgirlatx347

+0

이 코드를 작성할 때 오류가 다시 발생합니다. * float '객체는 정수로 해석 될 수 없습니다. * 오류 메시지에 명시된 바와 같이 float에서 interger로 목록을 변환하려면 어떻게해야합니까? – goodgirlatx347

+0

붙여 넣기 할 때 코드를 정확히 실행하고 있습니까? 나는 당신이 그 오류를 가져야한다고 생각하지 않는다. 그것은 내 컴퓨터에서 Python2.7을 사용하여 작동합니다. – mdml

1

클래식 사용 사례 : 여기에 사용하는

>>> players = ["Player{}".format(i) for i in range(20)] 
>>> half = len(players)/2 
>>> pairs = zip(players[:half], players[half:]) 
>>> pairs 
[('Player0', 'Player10'), ('Player1', 'Player11'), ('Player2', 'Player12'), ('Player3', 'Player13'), ('Player4', 'Player14'), ('Player5', 'Player15'), ('Player6', 'Player16'), ('Player7', 'Player17'), ('Player8', 'Player18'), ('Player9', 'Player19')] 
+0

afaik zip의 첫 번째 이름을 제한 할 필요가 없습니다. (예 :'zip (이름, 이름 [반 :]) ') –

+1

좋은 지적, 고마워, 그런 생각 안해.하지만 의도는 분명해. –

관련 문제