将以 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
。所以它与字符串并没有什么不同...
嗯,那只是为了练习。
我正在尝试制作一个函数,该函数接受以 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
。所以它与字符串并没有什么不同...
嗯,那只是为了练习。