我的想法是继续除法,直到商和余数相等,但是我似乎无法使它起作用。
是的,类似的东西。本质上,您希望保持除以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'



