我正在编写一个Python脚本,其中需要使用一组特定的字符将基数10的整数转换为基数80.为此,我实现了一个函数,但由于索引超出范围,我一直遇到IndexError.下面是我正在使用的函数:

def base10_to_base80(n):
    base_80 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.~!$&\'()*+,:;=/'  # Corrected string
    if n == 0:
        return base_80[0]
    digits = []
    while n:
        digits.append(base_80[n % 80])
        n //= 80
    return ''.join(digits[::-1])

# Example usage:
decimal_number = 79
base_80_number = base10_to_base80(decimal_number)
print(base_80_number)

推荐答案

您会收到此错误,因为

base_80 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.~!$&\'()*+,:;=/

len(base_80)79

你需要在base_80个字符中多一个,才能使它正常工作.



您当前的代码将适用于BASE 79,您只需修改:

digits.append(base_80[n % 79])
        n //= 79

你的代码会工作得很好.

Python相关问答推荐

通过优化空间在Python中的饼图中添加标签

Pydantic 2.7.0模型接受字符串日期时间或无

为什么符号没有按顺序添加?

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

Vectorize多个头寸的止盈/止盈回溯测试pythonpandas

从numpy数组和参数创建收件箱

如何将多进程池声明为变量并将其导入到另一个Python文件

梯度下降:简化要素集的运行时间比原始要素集长

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

迭代嵌套字典的值

如何启动下载并在不击中磁盘的情况下呈现响应?

pandas:对多级列框架的列进行排序/重新排序

Flask Jinja2如果语句总是计算为false&

如何过滤组s最大和最小行使用`transform`'

将CSS链接到HTML文件的问题

如何写一个polars birame到DuckDB

如何在python tkinter中绑定键盘上的另一个回车?

如何在不不断遇到ChromeDriver版本错误的情况下使用Selify?

在使用ROLING()获得最大值时,是否可以排除每个窗口中的前n个值?

如何有效地计算所有输出相对于参数的梯度?