2012-01-29 4 views
1

나는 사용자 번호를 얻을 수있는 모든 소수를 찾고 목록에 저장하는 프로그램을 가지고있다. 사용자 입력에 추가합니다.이 위치는 올바르게 표시되지 않습니다. 나는 내가 도움이 필요하다는 마지막 비트를 넣을 것이다. 내 말 (8)의 사용자 입력이있을 때리스트에서 값을 출력하는 파이썬 도움말 (FAQ)

num = int(raw_input('enter a number: ')) 
    b = [2, 3, 5, 7, 11, #... etc up to the prime before the users number] 
    for a in b: 
     for c in b: 
      if c + a = num 
      print num, '=', a, '+', c 
      break 

그러나 그것은 출력한다 :

8 = 3 5

8 5 3

난에 어떻게 얻을 수 + = + 하나의 값만 인쇄합니까?

답변

4

외부 루프가 아닌 내부 루프에서만 벗어났습니다.

num = int(raw_input('enter a number: ')) 
b = [2, 3, 5, 7, 11] 
for a in b: 
    for c in b: 
     if c + a == num: 
      print num, '=', a, '+', c 
      break 
    else: 
     continue 
    break 

출력 : 피 다른 파이썬

$ python ~/tmp/soprim.py 
enter a number: 8 
8 = 3 + 5 

약간 반 직관적이고; 루프가 깨지지 않고 완료된 경우에만 실행됩니다. 따라서이 경우 첫 번째 중단 점을 절대 실행하지 않으면 else 절이 실행되고 다음 외부 루프 실행이 계속됩니다. 하지만 첫 번째 휴식을 당했고, 다른 것은 뛰지 않았으므로 두 번째 휴식을 취한 다음 두 루프에서 벗어났습니다.

+0

이 감사 완벽하게 일했다. 나는 그걸로 다른 것을 가질 수 있다는 것을 몰랐다. 나는 if와 함께 줄을 써야한다고 생각했다. – user1176675

1

다른 방법으로는 함수에 루프를 이동하고 두 루프를 종료하기 위해 그 함수 내에서 return를 사용할 수 있습니다

def print_first(b): 
    for a in b: 
     for c in b: 
      if c + a == num: 
       print num, '=', a, '+', c 
       return 

num = int(raw_input('enter a number: ')) 
b = [2, 3, 5, 7, 11, #... etc up to the prime before the users number] 
print_first(b) # 8 = 3 + 5