Python 在给定字母表上将整数转换为字符串的算法

Python 在给定字母表上将整数转换为字符串的算法,python,algorithm,Python,Algorithm,我正在尝试实现一种算法,该算法将艺术性的长非负整数转换为给定字母表a和长度k的字符串,并以二进制字节顺序: 在哪里 我的代码: def ToString(x, k, A): S = [] N = len(A) # N = |A| for i in reversed(range(0,k)): s_k = InverseRank(x % N,A,N,k,i) x = x // N S.insert(0,s_

我正在尝试实现一种算法,该算法将艺术性的长非负整数转换为给定字母表a和长度k的字符串,并以二进制字节顺序:

在哪里

我的代码:

def ToString(x, k, A):       
    S = []
    N = len(A)  # N = |A|

    for i in reversed(range(0,k)):
        s_k = InverseRank(x % N,A,N,k,i)
        x = x // N
        S.insert(0,s_k)

    return S

def InverseRank(x,A,N,k,i):
    return A[(x//N**(k-i-1)) % N]
但是,它不能正常工作

  A = ['A', 'B', 'C', 'D', 'E']   # Alphabet
  k = 3
  x = 123
  S = ToString(x,k,A)
结果:

  s => ['A', 'A', 'E']
无论选择哪个x,结果字符串只在最后一个字符中不同。前两个总是“A”

您误解了“where”的解释。
表达式

是函数的算法应该生成的,而不是要在您的行中使用的秩函数
s_k=InverseRank(x%N,A,N,k,i)

一种解决方法是将您的
s_k=InverseRank(x%N,A,N,k,i)
更改为
s_k=A[x%N]
您误解了“where”的解释。
表达式

是函数的算法应该生成的,而不是要在您的行中使用的秩函数
s_k=InverseRank(x%N,A,N,k,i)

一种解决方案是将
s_k=InverseRank(x%N,A,N,k,i)
更改为
s_k=A[x%N]