将以 10 为基数的数字转换为任何没有字符串的基数

Converting a base 10 number to any base without strings

我正在尝试制作一个函数,该函数接受以 10 为底数的数字,并且可以更改为从 2 到 9 的任何底数。我正在尝试仅使用 math 模块和一些简单的数学运算。

我的代码涉及字符串,我想消除它们,而是让函数做一些数学运算,而不是使用字符串中的数字。我也在尝试使输出整数。

def conver(n,b):
    digits = ('0123456789')
    ans = ""
    while n > 0:
        ans = digits[n%b] + ans
        n //= b
    return ans

例如,用户可以输入值 (14,2) 并获得输出 1110

可以"convert" 以 9 为基数的简单实现如下:

def conver(n,b):
    a = 0
    i = 0
    while n:
        n,r = divmod(n,b)
        a += 10**i * r
        i += 1

    return a

请注意 n,r = divmod(n,b) 可能是 r = n % b; n //= b

请注意,您得到的数字是一个整数(作为一种类型),但这样使用它是没有意义的,因为基数是错误的:例如:1110 不是 1110。所以它与字符串并没有什么不同...

嗯,那只是为了练习。