该线程具有一些示例实现。
实际上,我认为您的解决方案看起来不错,甚至可以递归使用,这在某种程度上令人愉悦。
我仍然会简化它以删除else
,但这可能是个人风格的事情。我认为if foo: return
这很明确,不需要else
明确说明它是一个单独的分支。
def digit_to_char(digit):
if digit < 10:
return str(digit)
return chr(ord('a') + digit - 10)
def str_base(number,base):
if number < 0:
return '-' + str_base(-number, base)
(d, m) = divmod(number, base)
if d > 0:
return str_base(d, base) + digit_to_char(m)
return digit_to_char(m)
我简化了0-9的情况digit_to_char()
,我认为str()
比chr(ord())
构造更清晰。为了最大限度地增加与>= 10
案件的对称性,ord()
可以考虑,但我没有打扰,因为它会增加一条线,简洁性更好。:)