1

我正在尝试将十进制转换为基数 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='')

我基于此代码

4

2 回答 2

2

在 Python 3 中,/运算符会进行浮点除法,即使两个参数都是整数。这是与 Python 2 的一个变化,在 Python 2 中,两个整数相除会丢弃小数部分。

您可以使用//运算符显式请求整数除法。结果将向负无穷大四舍五入。或者,由于您也在计算模数,您可以使用divmod同时获取它们:

else:
    n, x = divmod(n, 36)
    trc(n)
    if x < 10: # ...
于 2015-10-15T03:38:13.693 回答
-1

你可以这样做:

def trc(n):
    return(int(str(n), base = 36))

然后print(trc(x))进入x36 号基地。此解决方案适用于任何基地。

但是它不会给你以 36 为底的字母:它返回 36 而不是 'z'。

你需要为此制作一个单独的程序。

在大多数情况下,它应该足够好,除非您正在使用需要字母的excel之类的东西。

于 2021-01-05T12:10:52.253 回答