Python中int()强制类型转换

今天在一个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(),发现它真的是一个很神奇的函数。

python eval的妙用

原文地址:https://www.cnblogs.com/cathycheng/p/11177135.html