2016-11-01 4 views
0

숫자 목록과 숫자 b를 사용하여 b에 합계 된 값의 모든 쌍의 색인을 인쇄하는 함수를 만들려고합니다. 내 코드는 지금까지이 목록 작업값 쌍의 색인 반환

def pairSum(a,b): 
    for i in a: 
     for j in a: 
      if i+j==b: 

그것이이 목록에있는 값의 위치가 아닌 실제 번호를 반환이

>>>pairSum([7,8,5,3,4,6], 11) 
0 4 
1 3 
2 5 

주처럼 실행해야합니다를 포함하는 것을 나는 할 수 없습니다 내 머리를 감쌌다. enumerate

for i, x in enumerate(a): #i is index of x 
    for j, y in enumerate(a[i+1:], start=i+1): #j is index of y 
     if x+y == b: 
      print(i, j) 

a[i+1:]

+0

이것은 일반적으로 두 합계 문제라고합니다. 두 개의 합계에 대한 검색은 많은 설명과 문제 해결 방법을 제공합니다. – shaktimaan

+0

코드가 불완전하여 인쇄하거나 반환하지 않습니다. –

+0

나는 이것을 알고있다. 내 문제는 출력을 반환하는 것입니다. –

답변

1

를 사용하여 중복을 방지하고 자신에 추가되는 값을 중지하는 것입니다.

문서 : https://docs.python.org/3/library/functions.html#enumerate

+0

고맙습니다. 귀하의 답변이 도움이되었습니다. 나는 열거하는 것에 대해 생각하지 않는 바보 같이 느낀다. –