我正在尝试将十进制转换为基数36(... 8,9,a,b,c ... x,y,z,10,11 ......)但是当我运行我的代码时,我得到了一堆花车而不是整数。
def trc(n):
if (n < 0): print(0, end='')
elif (n<=1): print(n, end='')
else:
trc( n / 36 )
x =(n%36)
if (x < 10): print(x, end='')
else: print(chr(x+87), end='')
我将此代码基于this。
答案 0 :(得分:1)
在Python 3中,/
运算符执行浮点除法,即使两个参数都是整数。这是Python 2的变化,其中除以两个整数将丢弃小数部分。
您可以使用//
运算符明确请求整数除法。结果将向负无穷大四舍五入。或者,既然您还计算了模数,您可以使用divmod
同时获取它们:
else:
n, x = divmod(n, 36)
trc(n)
if x < 10: # ...
答案 1 :(得分:-1)
你可以这样做:
def trc(n):
return(int(str(n), base = 36))
然后用 print(trc(x))
得到以 36 为基数的 x
。这个解决方案适用于任何基数。
但是它不会给你以 36 为底的字母:它返回 36 而不是 'z'。
您需要为此制作一个单独的程序。
在大多数情况下它应该足够好,除非您使用像 excel 这样需要字母的东西。