2017-08-31 84 views
3

我是新來的python編程,我正在做一些實驗。希望我的問題不是太愚蠢:我正在編寫一個小程序,它將輸入添加到列表中,並在輸入等於4時使用while循環打印它。問題是它永遠不會停止添加輸入並打印列表。 我的代碼是:將用戶輸入附加到循環中的列表

S=input() 
L=[] 
while S!=4: 
    L.append(S) 
    if S==4: 
     break 
print(L) 
+2

輸入始終爲'string'類型。當你輸入'4'時,你不會在列表中添加'4',而是會添加'4'。你必須先將它轉換爲int。像'int(input())' –

+0

您正在使用哪個版本的Python? –

+0

我正在使用python 3.6 – Franz

回答

-1

這將考慮'4'作爲一個字符串作爲平等將舉行您已經創建了您的代碼無限循環。進入循環後,您不會改變S的值。你應該從循環中,像這樣添加得到另一個輸入:

S=input() 
L=[] 
while S!=4: 
    L.append(S) 
    S = input() 
print(L) 

此外,如果你的代碼的條件是無用的,因爲它是在while循環聲明

+1

這段代碼也有一個無限循環。 –

+0

那麼,循環一直運行,直到用戶插入數字4.這究竟是一個無限循環? – itaisls9

+0

輸入函數返回字符串,所以S永遠不會是一個整數。 –

2

定義inp不同的值小於4,並保持通話input()一個循環中。

inp = 0 
lst = [] 
while inp != 4: 
    try: 
     inp = int(input()) # raw_input on python2 
     lst.append(inp) 
    except ValueError: 
     pass 

print(lst) 

更常見的成語是提供一種拆分空格隔開的整數,並轉換爲整數:

lst = list(map(int, input().split())) # omit list() on python2 
1 2 3 4 5 

print(lst) 
[1, 2, 3, 4, 5] 
+0

也許也是一個'嘗試 - 除了'塊轉換爲'int()'?.. –

+0

@ Ev.Kounis當然,爲什麼不。好建議。 –

1

的問題是,因爲你一次例如讀取輸入S = 1,後那S永遠是1所以S永遠不會是4,你的循環永不彎腰,你必須添加你的輸入到while

list = [] 
number = -1 
while number != 4: 
    number = int(input()) 
    list.append(number) 
print(list) 

如果你檢查S!= 4 while你不t need if statement in while`。

1

input()函數返回字符串對象,所以它們永遠不可能等於4,它是一個int對象。

要解決問題,請用替換4

,當你進入4輸入

1

已經設置有一個很大的問題與您的代碼,你再也不會更新S上更正確的答案應該是:

S=input() 
L=[] 
while S!=4: 
    L.append(S) 
    if S=="4": 
     break 
    S = input() 
print(L) 

如果你不想要的一切阻塞以等待新的輸入,那麼你可以考慮扔在線程,但如果它只是允許用戶將值添加到數組並停止這樣做通過添加4可以幫助

+0

如果您希望數組包含int,那麼這與int cast是offcourse,創建者 –

+0

沒有具體提及謝謝!!!!!! – Franz