冗長的回答
Oversymplifyng問題,int
builtin(跟隨鏈接瞭解整個故事)需要一個參數,數字文字或字符串。
您的代碼
>>> a=str(input('Voer een door spatie gescheiden lijst met getallen in: ').split())
是創建一個列表的文字表述,因爲你使用str
內置返回一個Python對象的文本表示:
>>> a
"['2', '3', '4', '5']"
以上是不按照int
的要求,但是文本表示的是一個數字的文本表示,所以當你將它傳遞給int
時,它會投訴
ValueError: invalid literal for int() with base 10: "['2', '3', '4', '5']"
如果我們忽略對str
的呼叫,該怎麼辦?
>>> a = input('Voer een door spatie gescheiden lijst met getallen in: ').split()
>>> a
['2', '3', '4', '5']
>>> int(a)
TypeError: int() argument must be a string or a number, not 'list'
注意,錯誤消息不同的是:不再是ValueError
但TypeError
。我們有一個列表,其中的項目是表示數字的字符串,但我們不允許使用列表,因爲作爲int
的參數。
輸入列表理解,當代成語來操縱內容列表的(或通用的迭代)。
>>> [int(elt) for elt in a]
[2, 3, 4, 5]
的語法是容易的,[...]
你有開閉托架,就像使用列表字面時寫入和內部你有一個由內向外的循環,循環,然後將第一主體for
規範。正文的評估結果順序存儲在一個列表中,即解釋器爲你輸出,正如你上面所看到的,我們沒有更多的字符串表示數字,但是是整數。列表解析的結果賦值給一個變量
>>> b = [int(elt) for elt in a]
,就大功告成了:
>>> print(b)
[2, 3, 4, 5]
>>>
在Python3,'input'已經產生一個字符串,所以'STR(輸入(...) )'是多餘的。 – 2015-02-10 13:39:24