今天在一個Python學習交流群中發現了一個有趣的類型轉換。
a=12.8 print(type(12.8)) print(int(12.8))
運行結果很明顯:
<class 'float'> 12
接下來就是有些疑惑的地方了。
a = input("input:") print(type(a)) print(int(a))
不同的輸入有不同的輸出結果,當輸入小數時,會報錯;當輸入整數時卻可以正常運行。
input:12.8 <class 'str'> Traceback (most recent call last): File "D:/PycharmProject/Study/Chapter3.py", line 66, in <module> print(int(a)) ValueError: invalid literal for int() with base 10: '12.8'
input:12 <class 'str'> 12
我和朋友(我們只是菜鳥相互出主意那種)想到的方法是:
a = input("input:") print(type(a)) print(int(float(a)))
將類型進行兩次轉換,得到了想要的結果:
input:12.8 <class 'str'> 12
群里也有人給出了更好的辦法:
a = eval(input("input:")) print(type(a)) print(int(a))
得到的結果:
input:12.8 <class 'float'> 12
通過搜索eval(),發現它真的是一個很神奇的函數。