我已經定義了一個需要3個參數的函數,其中一個參數必須是一個列表。 我發現的一種解決方案只有在列表由整數構成時纔有效,這不一定是這種情況(類型可以在同一列表中變化)。 如何請求用戶的列表類型輸入?例如:當輸入類似[1,2,3]的東西時,它被認爲是一個列表?如何在Python中請求用戶的列表輸入?
回答
這裏有一種方法:
$ cat foo.py
import sys
input1 = sys.argv[1]
input2 = sys.argv[2]
print('Before\n-------')
print('input1:{},type_of_input1:{}'.format(input1, type(input1)))
print('input2:{},type_of_input2:{}'.format(input2, type(input2)))
print('After\n-------')
input1 = input1.split(' ')
print('input1:{},type_of_input1:{}'.format(input1, type(input1)))
print('input2:{},type_of_input2:{}'.format(input2, type(input2)))
$
執行輸出
$ python foo.py 'foo bar' bat
Before
-------
input1:foo bar,type_of_input1:<type 'str'>
input2:bat,type_of_input2:<type 'str'>
After
-------
input1:['foo', 'bar'],type_of_input1:<type 'list'>
input2:bat,type_of_input2:<type 'str'>
$
如果你完全信任用戶的輸入,你可以只使用eval()
。假設用戶輸入字符串[1, 2, 3]
:
x = input() # Python 3, use raw_input for Python 2
y = eval(x) # Dangerous, don't use with untrusted input
print(y)
# [1, 2, 3]
print(len(y))
# 3
更新:
ast.literal_eval
這裏是一個更好的選擇。
import ast
x = input() # Python 3, use raw_input for Python 2
y = ast.literal_eval(x)
print(y)
# [1, 2, 3]
print(len(y))
# 3
'eval'是一個危險的想法...只是等待別人輸入'__import __( 「shutil」)。rmtree' – donkopotamus
同意,這就是爲什麼我提到它在我的答案中是危險的。如果意圖是作者在本地交互式運行腳本,則不會比shell提示更危險。 – Scovetta
但爲什麼在這種情況下建議'eval'而不是'ast.literal_eval'? – donkopotamus
保持簡單和安全使用input
和輸入轉換成列表自己:
import re
re.sub("[^\w]", " ", input('-->')).split()
-->This is a string of words converted into a list
output:
['This', 'is', 'a', 'string', 'of', 'words', 'converted', 'into', 'a', 'list']
input
是一個內置的:https://docs.python.org/3/library/functions.html#input
import ast
while True:
s=raw_input("Enter a list: ")
s=ast.literal_eval(s)
if not isinstance(s, list):
print "Nope! {} is a {}".format(s, type(s))
else:
break
print s
如果你想選擇輸入元組(通過輸入1,2,3
例如)所述用戶的n個添加tuple
到isinstance
:
import ast
while True:
s=raw_input("Enter a list: ")
s=ast.literal_eval(s)
if not isinstance(s, (list, tuple)):
print "Nope! {} is a {}".format(s, type(s))
else:
break
- 1. 如何讓我的代碼再次請求用戶輸入python
- 2. 如何使用Python 3.x請求用戶輸入?
- 3. 如何在Python中將用戶輸入添加到列表中
- 4. 如何在Python中將用戶輸入存儲到列表中
- 5. 如果python中有錯誤,請求用戶重新輸入
- 6. 如何用python中的用戶輸入列表更新json?
- 7. 如何請求用戶輸入每次無效輸入
- 8. 請求用戶輸入python中的有限時間
- 9. 如何保存列表中的用戶輸入?-Python
- 10. CakePHP:請求用戶在輸入帳戶時輸入密碼
- 11. Python:如何將輸入的請求存儲在變量中?
- 12. 如何在功能中要求用戶輸入。 Python相關
- 13. 如何在用戶輸入中更改python中的行列
- 14. Python,如何將用戶輸入保存到列表中
- 15. Python:如何將用戶輸入添加到列表中?
- 16. 如何通過用戶輸入添加到python列表中
- 17. 如何在Python中將變量傳遞給輸入請求?
- 18. Python-將用戶輸入變成列表
- 19. 如何在請求用戶輸入後繼續執行程序?
- 20. 使用swing的MVC,如何讓模型請求用戶輸入?
- 21. 您如何請求使用Rx的用戶輸入?
- 22. 如何接受用戶輸入並插入http獲取請求?
- 23. 如何在發送用戶請求之前注入HTTP請求
- 24. 如何在Python中的多維列表中接受用戶輸入?
- 25. 我如何從列表中隨機挑選出用戶要求在python中使用輸入的次數?
- 26. 如何製作用戶輸入到Python的輸入字符串列表?
- 27. 如何創建用戶輸入列表?
- 28. python列表中的輸入
- 29. 要求在輸入列表?
- 30. 如何使用用戶輸入與鐵ajax REST請求
閱讀有關[ast.literal_eval](https://docs.python.org/2/library/ast.html #ast.literal_eval) – dawg
這個問題有什麼關係? –
是一個問題:如何從用戶請求列表類型輸入? – gregory