2013-04-11 104 views
0

我正在製作一個程序,將數字從低到高排序,只要數字小於300,但我無法弄清楚如何將用戶輸入更改爲列表。這裏是我的代碼:如何將整數列表轉換爲整數?

List1=[] 
List2=[] 
var=1 
thing=input("Insert numbers here") 
List1.append(thing) 
while var < 300: 
    for that in List1: 
     if that < var: 
      List2.append(number) 
    var = var + 1 
print(List2) 

當我運行的代碼,它說,在第8行,一個字符串不能與一個int進行比較。 請幫忙。提前致謝。

+0

如何將用戶的輸入格式化? – 2013-04-11 01:28:08

+0

'number'從哪裏來? – Makoto 2013-04-11 01:28:18

+0

只需簡單的'int()'強制轉換就可以了,除了一些例外。 – squiguy 2013-04-11 01:28:42

回答

2

它看起來像你的變量that是一個字符串。這就是爲什麼你無法將它與一個整數進行比較的原因。如果您需要將字符串轉換爲int,您可以簡單地用int(your_variable_here)包裝它。

例如

if int(that) < var:

這將that轉換字符串爲一個integers(數)。將其轉換爲整數的好處是您可以將其與其他整數進行比較,並使用基本的arithmetic operations。如果你使用了一個字符串,那將是不可能的。

更好的解決方案是將輸入作爲整數直接存儲。

List1.append(int(thing)) # We wrap the keyboard input with int 

此外,如果你正在運行的Python 2.x的,我會建議,而不是input您使用raw_input

0

由於這似乎沒有在任何循環,我不明白你如何可以在列表中有多個條目..也許你可以有空間分隔號碼輸入?使用蟒蛇3,這可以最小化,像這樣(減去錯誤處理):

nums = [x for x in list(map(int, input("Enter numbers: ").split())) if x < 300]  
nums.sort() 

或..

nums = input("Enter numbers: ") # Get the number string 
nums = nums.split() # Split the string by space character 
nums = list(map(int, nums)) # call int() on each item in the list, converting to int 
nums.sort() # sort the list of numbers 
nums = [x for x in nums if x < 300] # remove any numbers 300 or over. 

輸入/輸出:

Enter numbers: 1 5 301 3000 2 
[1, 2, 5] 
+0

非常感謝,但我是一種在Python的nube。你能解釋一下你剛剛做了什麼嗎? – 2013-04-11 15:49:45

+0

@JamesDorfman - 特別是哪一行? – Aesthete 2013-04-11 22:38:52

0

如果你進入以逗號分隔的數字,以下單行將起作用:

>>> sorted(list(input("Enter numbers: ")), reverse=True) 
Enter numbers: 1, 2, 3 
[3, 2, 1] 

要刪除號碼< 300:

>>> sorted([num for num in input("Enter numbers: ") if num < 300], reverse=True) 
Enter numbers: 1, 301, 299, 300, 2, 3 
[299, 3, 2, 1]