在 python 中将十进制转换为三元(base3)

新手上路,请多包涵

我正在尝试在 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

原文由 Sidsy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 438
2 个回答

我的想法是一直除法直到商和余数相等,但我似乎无法让它发挥作用。

是的,类似的东西。本质上,您想要继续除以 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'

原文由 poke 发布,翻译遵循 CC BY-SA 3.0 许可协议

您还可以使用 NumPy 的实现: https ://numpy.org/doc/stable/reference/generated/numpy.base_repr.html?highlight=base_repr#numpy.base_repr

不过,我同意专门用于三元的函数更快。

 import numpy as np

number=100 # decimal
ternary=np.base_repr(number,base=3)
print(ternary)
#10201

原文由 SzorgosDiák 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题