zltzlt 发表于 2020-8-11 13:29:04

Python FAQ 053 关于 int() 的转化问题

Python FAQ 053 关于 int() 的转化问题

问题

num = int(input('请输入一个数字:'))
print(num)

这个程序,我输入一个小数(例如 3.5)就会报错,难道 int() 不能转化小数吗?

解答

int() 可以把字符串或者浮点数转化为整型。

当转化字符串时,字符串内必须是纯数字才能转化成功。例如:

>>> int('1')
1
>>> int('a')    # 转化失败
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
    int('a')    # 转化失败
ValueError: invalid literal for int() with base 10: 'a'
>>> int('2.5')    # 转化失败,不能转化浮点数字符串
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
    int('2.5')    # 转化失败,不能转化浮点数字符串
ValueError: invalid literal for int() with base 10: '2.5'

当转化浮点数时做 “截断小数部分处理”,例如:

>>> int(5.2)    # 截去小数部分 .2
5
>>> int(-5.9)    # 截去小数部分 .9
-5

而你输入的 '3.5' 不是纯数字字符串,所以会报错。

想转化一个浮点数字符串应该使用 float() :

num = float(input('请输入一个数字:'))
print(num)

十泉浩 发表于 2020-8-12 14:15:27

页: [1]
查看完整版本: Python FAQ 053 关于 int() 的转化问题