2014-01-12 26 views
1

我決定修改下面的while循環,並使用它的函數的內部,使得該環可以採取我創建下面的腳本的任何值,而不是6.如何在函數內部使用while循環?

i = 0 
numbers = [] 
while i < 6: 
    numbers.append(i) 
    i += 1 

,這樣我可以使用變量(或更具體論證)而不是6。

def numbers(limit): 
    i = 0 
    numbers = [] 

    while i < limit: 
     numbers.append(i) 
     i = i + 1 
    print numbers 

user_limit = raw_input("Give me a limit ")  
numbers(user_limit) 

當我沒有使用raw_input()和簡單地把參數從腳本它工作正常,但現在,當我運行它(在Microsoft Powershell的)光標閃爍在raw_input()在此提出問題後,繼續。然後我必須擊中CTRL + C才能中止它。也許這個函數在raw_input()之後沒有被調用。

現在它給像在圖片中的內存錯誤。 enter image description here

+1

你按輸入後輸入? –

+0

是的,我確實........ – kartikeykant18

+0

如果你升級到Python 3.x,那麼你應該有一個錯誤你應該考慮你是否真的需要運行這樣一個古老的Python版本。 – Duncan

回答

10

你需要轉換user_limitInt

raw_input()返回值是str和語句用我這是int

def numbers(limit): 
    i = 0 
    numbers = [] 

    while i < limit: 
     numbers.append(i) 
     i = i + 1 
    print numbers 

user_limit = int(raw_input("Give me a limit ")) 
numbers(user_limit) 

輸出:

Give me a limit 8 
[0, 1, 2, 3, 4, 5, 6, 7] 
+0

Cf CPython手冊:CPython實現細節:除數字以外的其他類型的對象按其類型名排序;不支持正確比較的相同類型的對象按其地址排序。整數總是「小於」字符串。測試:1 <'1' –

+0

@RaphaëlBraud是的你是對的,這就是爲什麼它是一個無限循環。 –

+0

這就是爲什麼它給了我一個內存錯誤。謝謝!現在它工作正常! – kartikeykant18