📌  相关文章
📜  带有 base = ' ' 的 int() 的无效字面量是什么意思?

📅  最后修改于: 2022-05-13 01:55:50.631000             🧑  作者: Mango

带有 base = ' ' 的 int() 的无效字面量是什么意思?

当我们传递不适当的参数类型时会遇到ValueError 。在这里,我们讨论的是由于向int()函数传递了不正确的参数而导致的 ValueError。当我们传递浮点数的字符串表示或除 int 之外的任何字符串表示时,它会给出 ValueError。

示例 1:以 10 为底的 ValueError。

# ValueError caused by conversion of 
# String representation of float to int
int('23.5')

输出 :

ValueError: invalid literal for int() with base 10: '23.5'

可以认为,在执行上述代码时,小数部分“.5”应该被截断,代码应该只输出 23。但需要注意的一点是 int()函数使用十进制数系统作为其转换的基础,即。 base = 10 是转换的默认值。在十进制数字系统中,我们有从 0 到 9 的数字,不包括小数 (.) 和其他字符(字母和特殊字符)。因此,base = 10 的int()只能转换 int 的字符串表示形式,而不能转换浮点数或字符。

我们可以先使用float()函数将 float 的字符串表示形式转换为 float,然后使用int()将其转换为整数。

print(int(float('23.5')))

输出 :

23

示例 2:int()中传递字母。

int('abc')

输出 :

invalid literal for int() with base 10: 'abc'

字符 a、b、c、d、e 和 f 存在于 base = 16 系统中,因此只有这些字符以及数字 0 到 9 可以从它们的字符串表示形式转换为十六进制形式的整数。我们必须传递一个值为 16 的参数base

print(int('abc', base = 16))

输出 :

2748