在 Python 中,如果想要将一个字符串转换为一个数字,常用的有以下 3 种方式。
- 使用 int() 函数。
- 使用 float() 函数。
- 使用 eval() 函数。
使用 int() 将字符串转为整数
int() 是 Python 的一个内置函数,它用于将 “数值(如浮点数)” 或 “字符串” 转换成一个整数。
语法:
int(value, base)说明:
int() 函数接收以下 2 个参数。
value(必选):是一个数字或一个字符串。如果是字符串,则要求是一个整型字符串,字符串前面可以有符号(即 “+” 和 “-”),也可以有空格。base(可选):表示这是什么进制的字符串,默认值为 10。比如 “2” 表示二进制,“8” 表示八进制。需要注意的是,只有 value 为字符串时,才能使用 base 参数。
示例 1:int() 的参数是 “不带符号的字符串”
a = int('666')
print(a)
b = int('3.14')
print(b)运行结果如下。
666
(报错)ValueError: invalid literal for int() with base 10: '3.14'分析:
int() 只能将 “整型字符串” 转换为整数,而对于非整型字符串,则会直接报错。
示例 2:int() 的参数是 “带符号的字符串”
a = int('+666')
print(a)
b = int('-666')
print(b)运行结果如下。
666
-666分析:
如果 int() 的参数是字符串,则要求是一个整型字符串。不过字符串前面可以有符号(即 “+” 和 “-”),也可以有空格。
使用 float() 将字符串转为浮点数
float() 是 Python 的一个内置函数,用于将 “数值(如整数)” 或 “字符串” 转换成一个浮点数。
语法:
float(value)说明:
float() 函数接收单个参数。
value(必选):是一个数字或一个字符串。如果是字符串,则要求是整型字符串或浮点型字符串,字符串前面可以有符号(即 “+” 和 “-”),也可以有空格。
示例 3:float() 参数是 “字符串”
# 整数型字符串
print(float('666'))
# 浮点型字符串
print(float('3.14'))运行结果如下。
666.0
3.14分析:
一般情况下,只有 “整型字符串” 或 “浮点型字符串” 才可以作为 float() 函数的参数。如果使用了其他不符合条件的字符串,则会直接报错。比如执行 print(float('lvye123')),此时运行结果如下。
(报错)ValueError: could not convert string to float: 'lvye123'当然了,上面指的是一般情况下。实际上,float() 函数还有两种特殊情况,也就是表示 NaN 值和 infinity 值时,请看下面两个例子。
示例 4:float() 表示 NaN 值
print(float('nan'))
print(float('nAn'))
print(float('nAN'))
print(float('Nan'))
print(float('NaN'))运行结果如下。
nan
nan
nan
nan
nan分析:
float() 函数会将 'nan'、 'nAn'、'nAN'、'Nan'、'NaN'(不区分大小写)等字符串转换为 nan 值。
示例 5:float() 表示正无穷大值
print(float('inf'))
print(float('Inf'))
print(float('infinity'))
print(float('Infinity'))
print(float('InFiNiTy'))运行结果如下。
inf
inf
inf
inf
inf分析:
float() 函数会将 'inf'、'Inf'、'infinity'、'Infinity'、'InFiNiTy'(不区分大小写)等字符串转换为 inf(即正无穷大)。
提示: 对于 '-inf'、'-Inf'、'-infinity'、'-Infinity'、'-InFiNiTy'(不区分大小写)等,float() 会将其转换为 -inf(即负无穷大)。
示例 6:float() 的参数是 “带符号的字符串”
a = float('+3.14')
print(a)
b = float('-3.14')
print(b)运行结果如下。
3.14
-3.14分析:
如果 float() 的参数是字符串,则要求是一个整型字符串或浮点型字符串。且字符串前面可以有符号(即 “+” 和 “-”),也可以有空格。
使用 eval() 将字符串转为数字
eval() 是 Python 的一个内置函数,它用于将一个字符串作为 Python 表达式执行,并返回执行结果。
语法:
eval(expression, globals=None, locals=None)说明:
eval() 函数接收以下 3 个参数。
expression(必选):是一个字符串,它会转换为一个 Python 表达式并执行。globals(可选):是一个字典,用于指定全局命名空间,默认值为 None。locals(可选):是一个字典,用于指定本地命名空间,默认值为 None。
如果 globasl 和 locals 这 2 个参数省略,则 eval() 函数是在 “当前作用域” 中执行表达式。
示例 7:eval() 基本用法
a = eval('666')
b = eval('3.14')
print(a)
print(type(a))
print(b)
print(type(b))运行结果如下。
666
<class 'int'>
3.14
<class 'float'>分析:
如果是整型字符串,则 eval() 会将其转换为整数;如果是浮点型字符串,则 eval() 会将其转换为浮点数。
注意: 在 Python 业界,eval() 被称为 “万恶之源”。在实际开发中,我们极不推荐使用 eval() 来处理未知的用户输入!
