python腳本中使用eval(),運行報錯的解決方法


原代碼:

 

 此代碼執行后報錯:

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 類型。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM