我试图在python函数中使三进制十进制数。我的想法是继续除法,直到商和余数相等,但是我似乎无法使它起作用。这是我的代码:

l = 1


#problem code
def ternary(n):
    e = n/3
    q = n%3
    e= n/3
    q= e%3
    print q

r = input("What number should I convert?: ")
k = bin(r)
v = hex(r)
i = oct(r)
print k+"(Binary)"
print v+"(Hex)"
print i+"(Octals)"
ternary(r)
l+=1
# Variables:
#l,r,k,v,i
#n,q,e

最佳答案

我的想法是继续除法,直到商和余数相等,但是我似乎无法使它起作用。


是的,像那样。本质上,您希望保持除以3,然后收集余数。其余的则组成最终的数字。在Python中,您可以使用divmod划分并收集余数。

def ternary (n):
    if n == 0:
        return '0'
    nums = []
    while n:
        n, r = divmod(n, 3)
        nums.append(str(r))
    return ''.join(reversed(nums))


例子:

>>> ternary(0)
'0'
>>> ternary(1)
'1'
>>> ternary(2)
'2'
>>> ternary(3)
'10'
>>> ternary(12)
'110'
>>> ternary(22)
'211'

08-20 00:59