2014-02-20 5 views
1

다른 for 루프의 for-else 루프와 관련된 몇 가지 질문이 있습니다. 당신이이 소수를 결정하고 나중에 검색 할 수 있도록 목록에 저장할위한시피다른 For 루프의 for-Else 루프

primelist = [] 
for p in range (2, x+1): 
    print 'in first for' 
    raw_input() 
    for i in range(2, p): 
     print 'in second for' 
     if p%i == 0: 
      print 'in if' 
      raw_input() 
      break 
    else: 
     print 'in else' 
     raw_input() 
     primelist = primelist + [p] 
return primelist 

: 그래서 여기 예입니다. 그래서 내 문제는 첫 번째 for 루프입니다. 프로그램을 실행하면 다음과 같이 입력됩니다. 첫 번째 FOR 루프, ELSE, 첫 번째 FOR 루프, 두 번째 FOR 루프 등. 처음으로 건너 뛴 이유는 무엇입니까? 내가 얻는 1000 번호를 요구하는 경우 또한 : 7919을

for i in range(2, p) 

및 7907과 함께

for i in range(2, p/2). 

과 이유는 무엇입니까? 희망을 주길 바라지 만, 소수 알고리즘을 구현하는 데 다른 방법을 사용하지 마십시오!

+0

이 코드에는 구문 오류가 있습니다. 'else' 문과 그 자식 문을'if' 문과 인라인되도록 들여 쓰기를 의미합니까? – Hooked

+2

@Hooked 파이썬에서'else'를'for' 할 수 있습니다. 루프가'중단 '없이 종료되면 조건이 입력됩니다. –

+0

@SilasRay 와우, 나는 그것을 몰랐다. 내 실수 BlackTM. 나는 다른 사람들이 배울 수 있도록 내 의견을 남겨 둘 것입니다. – Hooked

답변

1

파이썬의 range에는 종료 값이 포함되지 않습니다.

range[start, end) 

그래서, 첫 번째 반복에서 p의 값이되며 range(2, 2)은 빈 목록입니다. 그래서 else 부분이 입력됩니다.

print range(2, 2) # [] 
+0

알겠습니다. 고맙습니다! – BlackTM