您不應該在用戶輸入上一般使用eval。有人可以輸入一個可能導致惡作劇的陳述。
出於同樣的原因,你應該避免使用input(),因爲它相當於eval(raw_input())
也可能導致惡作劇 - 意圖與否。
你可以,但是,安全到達用戶輸入的Python解釋成Python數據結構與ast.literal_eval:
>>> import ast
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: 1,2,3
(1, 2, 3)
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: [1,2,3]
[1, 2, 3]
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: 123
123
>>> ast.literal_eval(raw_input('type a number: '))
type a number: 0xab
171
(在每種情況下,>>> Type Python input:
後的第一行是我鍵入到raw_input()
如果你想要來拆分數字,你可以這樣做:
>>> [int(c) for c in raw_input() if c in '1234567890']
1234
[1, 2, 3, 4]
>>> [int(c) for c in raw_input() if c in '1234567890']
123a45
[1, 2, 3, 4, 5]
公告非數字是FIL tered。
不要使用'eval'。另外,如果你使用python 2,不要使用'input'。兩者都會導致任意代碼執行漏洞。 –
我知道每個人都喜歡簡單的代表,但對於質量問答,真正需要關閉常見問題,而不是每次都回答十幾個相同的答案。 – Junuxx