如何在Python中避免IndexError将十进制整数转换为80进制?
十进制转80进制函数IndexError问题解决
你的代码触发IndexError的原因是定义的base_80字符集长度不足80个,导致当计算n%80得到78或79时,超出字符串的索引范围(字符串索引从0开始,长度78的话最大索引为77)。
数一下你当前的base_80字符数量:
- 数字(0-9):10个
- 小写字母(a-z):26个
- 大写字母(A-Z):26个
- 符号(-_.~!$&'()*+,:;/=):16个
总计10+26+26+16=78个,差2个字符。
你需要补充两个字符到base_80字符串里,让总长度刚好为80。比如可以添加@和%(或你需求中指定的其他合法字符)。
修正后的代码如下:
def base10_to_base80(n): # 补充两个字符,使总长度为80 base_80 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.~!$&\'()*+,:;=/@%' if n == 0: return base_80[0] digits = [] while n: digits.append(base_80[n % 80]) n //= 80 return ''.join(digits[::-1]) # 测试示例 decimal_number = 79 base_80_number = base10_to_base80(decimal_number) print(base_80_number) # 输出补充的第二个新字符,此处为%
如果有指定的80个字符集,直接替换base_80字符串即可,确保长度严格为80。
内容的提问来源于stack exchange,提问作者user23470475
相关产品推荐
相关产品推荐

