原代碼:

此代碼執行后報錯:
Traceback (most recent call last):
File "C:\Python27\test3-3.py", line 2, in <module>
x=eval(input("請輸入一個數據:"))
TypeError: eval() arg 1 must be a string or code object
經過網上查找資料,發現原因是由於python2.7里input接受到的默認是int類型,python3中是str類型,而我的python版本是2.7。
發現問題后,將input改成raw_input,就能成功運行啦:

參考解答:http://wenda.chinahadoop.cn/question/7484
input()函數不是應該直接返回的是數字嗎,為什么還要在eval轉換下。
老師,您好,我在看了這個視頻的時候,跟着您的代碼敲的,你的代碼我試過之后,就報eval()轉換錯誤(TypeError: eval() arg 1 must be a string or code object),下面是我在百度搜索到的,input()函數是不是
只是接受的是控制台的輸入,前面的“請輸入人民幣金額”是不是不是給前面的賦值。而我的python是2.7的,所有我的默認是int型的,你的是3 的是str型的?
答:
python input() 相等於 eval(raw_input(prompt)) ,用來獲取控制台的輸入。
raw_input() 將所有輸入作為字符串看待,返回字符串類型。而 input() 在對待純數字輸入時具有自己的特性,它返回所輸入的數字的類型( int, float )。
注意:input() 和 raw_input() 這兩個函數均能接收 字符串 ,但 raw_input() 直接讀取控制台的輸入(任何類型的輸入它都可以接收)。而對於 input() ,它希望能夠讀取一個合法的 python 表達式,即你輸入字符串的時候必須使用引號將它括起來,否則它會引發一個 SyntaxError 。
除非對 input() 有特別需要,否則一般情況下我們都是推薦使用 raw_input() 來與用戶交互。
注意:python3 里 input() 默認接收到的是 str 類型。
