带有 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