2016-09-04 3 views
0

내 동안 코드와 비교했을 때 상태 :무한 파이썬에서 루프가 정수 범위

이 무한 루프로 전환
i=0 
    a = range(100) 
    while i < range(100): 
     print i 
     i += 9 

... 난 이유를 알고 있습니다?

정수가 목록과 비교 되었기 때문입니까? 하지만 내가 99보다 커지면 어떻게됩니까?

while 루프에서 빠져 나올 수 없습니까? int 항상 (이 목록이 비어있는 경우에도)을 list 미만, 파이썬 2.x에서의 슬프게도

i=0 
     a = range(100) 
     a_len = len(a) 
     while i < a_len: 
      print i 
      i += 9 

답변

8

: 코드 아래

는 예상대로 잘 작동합니다.

for i in range(0, 100, 9): 
    print i 
0

range(100) : 당신이 range의 3 인자 양식을 사용하고 싶은 무엇

>>> 9 < [] 
True 

그래서 당신은 시작하는 정지단계, 예를 1에서 100까지의 정수 목록으로 반복 할 수 있습니다. 그래서, len(range(100) = 100. 파이썬 2.x에서는리스트가 항상 정수보다 큽니다. 이 문제를 해결하는 가장 간단한 방법은 다음과 같습니다.

i=0 
while i < 100: # instead of range(100) 
    print i 
    i += 9 
관련 문제