2016-09-04 18 views
0

我雖然比較的代碼:無限,而在Python循環時,整數與範圍

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

此進入一個無限循環......可我知道爲什麼嗎?

是因爲一個整數與列表進行比較? 但是當我變得大於99時會發生什麼?

不應該它出來的while循環?

下面的代碼工作正常預期:

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

回答

8
在Python 2.x的

可悲的是,一個int總是小於list(即使該列表爲空)。

>>> 9 < [] 
True 

要使用的range 3個參數的形式做什麼讓你有一個開始,一個停止一步,如:

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

range(100)是您應該迭代的從1到100的整數列表。所以,len(range(100) = 100.在Python 2.x中,列表總是大於一個整數。解決此問題的一個非常簡單的方法是:

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