You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中int(x, base)函数报错原因咨询:基数异常与无效字面量

搞懂Python int()函数的这几个报错问题

嘿,作为编程新手遇到这种报错太正常了,我来帮你逐个拆解清楚原因:

第一个报错:int('23123',1) 触发 ValueError: int() base must be >= 2 and <= 36

Python里的int(x, base)函数,第二个参数base(基数)的合法范围是2到36,这可不是随便定的:

  • 基数为1的话,根本没有有效的数字表示逻辑——总不能只用0来表达所有数吧?完全没有实用价值
  • 上限设为36是因为我们用0-9(10个)加上a-z(26个,不区分大小写)来对应不同基数的数字,a代表10,b代表11……z代表35,加起来刚好36个可用字符

所以你传base=1肯定会触发这个范围错误。

第二个报错:int('123',3) 触发 ValueError: invalid literal for int() with base 3: '123'

当你指定base=3时,意味着要转换的是三进制数,而三进制数的每一位只能是0、1、2,绝对不能出现3!
你传入的字符串是'123',最后一位的3已经超出了三进制允许的数字范围(必须小于基数),所以Python会判定这个字符串是无效的三进制字面量。

举个正确的例子:int('122',3) 是合法的,计算结果是 1*3² + 2*3 + 2 = 9 + 6 + 2 = 17。

第三个报错:ValueError: int() base must be >= 2 and <= 36 but using 3 is invalid?

这个报错是你混淆了规则导致的——base=3本身是在合法范围内的,但你传入的字符串不符合三进制的要求(比如像第二个例子里包含了3),所以才会出现这种看似矛盾的提示,核心问题还是字符串里的字符和指定的基数不匹配。

最后总结一下使用int(x, base)的关键规则:

  • 基数base必须在2到36之间(包含两端)
  • 要转换的字符串x里的每一个字符,对应的数值必须小于指定的base(比如base=16的话,字符可以是0-9、a-f,因为f对应15 < 16)

内容的提问来源于stack exchange,提问作者Llallum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:41:00