[英]How to take matrix input from the user and display the matrix in Python?
[英]how to take user input as dictionary and display its content in python
我試圖將用戶輸入作為字典並使用以下代碼在屏幕上顯示
import ast
a = input("Please enter a dictionary: ")
d = ast.literal_eval(a)
print d
but this error is occuring
File "x.py", line 3, in <module>
d = ast.literal_eval(a)
File "/usr/lib64/python2.6/ast.py", line 68, in literal_eval
return _convert(node_or_string)
File "/usr/lib64/python2.6/ast.py", line 67, in _convert
raise ValueError('malformed string')
ValueError: malformed string
像這樣轉換為raw_input
:
import ast
a = raw_input("Please enter a dictionary: ")
d = ast.literal_eval(a)
print d
輸出:
{'a': 1, 'b': 2}
說明:
input()
就像執行eval(raw_input(....))
,在您的情況下ast.literal_eval()
字符串轉換為dict, ast.literal_eval()
期望字符串不是dict。
另請注意,在python 3.x中,沒有raw_input()
因為它已轉換為input()
您也可以參考這篇文章
ast.literal_eval用於將字符串轉換為dict對象,根據我的猜測,您正在插入{'a':1,'b':1}(字典類型),然后嘗試在其上使用ast.literal_eval。 當您將dict傳遞到接受string的函數時,它將給出錯誤。 如果要將字典作為字符串,請使用“ {'a':1,'b':1}”
碼
>>> import ast
>>> a = input("Please enter a dictionary: ")
Please enter a dictionary: {'a':1,'b':2}
>>> d = ast.literal_eval(a)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
d = ast.literal_eval(a)
File "/usr/lib/python2.7/ast.py", line 80, in literal_eval
return _convert(node_or_string)
File "/usr/lib/python2.7/ast.py", line 79, in _convert
raise ValueError('malformed string')
ValueError: malformed string
>>> a = input("Please enter a dictionary: ")
Please enter a dictionary: "{'a':1,'b':2}"
>>> a
"{'a':1,'b':2}"
>>> d = ast.literal_eval(a)
>>> d
{'a': 1, 'b': 2}
我編輯了您的代碼檢查差異。
import ast
a = input('Please enter a dictionary:')
d = ast.literal_eval(str(a))
print d
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.