eval(input())


看到一段代碼,判讀輸入的數字,用的是eval(input()),查了一下,原來input()會把所有輸入值,包括數字,視為字符串,而eval()會去掉字符串最外層的引號,然后當做Python語句執行[mark:語句or表達式,應該是表達式!],直觀理解是:看起來像數字的字符串變成數字了。。。

>>> a = input()
123
>>> type(a)
<class 'str'>
>>> b = eval(input())
456
>>> type(b)
<class 'int'>
>>>

 一個反例

>>> a = eval("'pybook'")
>>> a
'pybook'

所以本質上,eval是去一層引號,然后按語句執行,eval(input())本質是一個取輸入數字的技巧

 

如果不用eval,怎么取輸入的數字?

可以用int, float轉數據類型,但效果不如eval

 

一點補充說明

對於eval(input()),input隱含會在輸入最外層加一層引號,即把輸入視為一個字符串,eval隱含會去最外層引號,如果輸入的字符串帶了引號,則這個引號會保留,看下面的例子

>>> guess = input()
0x452//2
>>> guess
'0x452//2'
>>> guess = eval(input())
0x452//2
>>> guess
553
>>> guess = eval(input())
'0x452//2'
>>> guess
'0x452//2' #保留輸入的引號
>>> guess = input()
'0x452//2'
>>> guess
"'0x452//2'" #2層引號
>>> 

  


免責聲明!

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



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