Python以递归方式向整数添加逗号

时间:2013-07-21 21:12:20

标签: python python-3.x

我需要编写一个函数,将逗号添加到整数n并将结果作为字符串返回。

例如,小于1000的数字没有添加逗号;号码1343456765将以'1,343,456,765'的形式返回。

def commas(n):

    if len(n)<4:
        return 'n'
    else:
        return (recursive formula)

3 个答案:

答案 0 :(得分:3)

忽略递归请求,这是添加逗号的简便方法:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US')
'en_US'
>>> locale.format('%d', 1343456765, grouping=True)
'1,343,456,765'
>>> locale.format('%d', 1000, grouping=True)
'1,000'
>>> locale.format('%d', 999, grouping=True)
'999'

答案 1 :(得分:1)

想想,如果你有12345且你知道12的格式,那么你将如何计算12345?

def comma(n):
    if not isinstance(n,str): n = str(n)
    if len(n) < 4: return n
    else: return comma(n[:-3]) + ',' + n[-3:]

答案 2 :(得分:0)

使用duck typing,因为正常情况下第一次递归后会输入str

def commas(s):
    try:
        return s if len(s)<4 else commas(s[:-3]) + ',' + s[-3:] 
    except TypeError:
        return commas(str(s))

>>> commas(10**20)
'100,000,000,000,000,000,000'

但是最好只需要一个字符串输入:

def commas(s):
        return s if len(s)<4 else commas(s[:-3]) + ',' + s[-3:]

>>> commas(str(10**20))
'100,000,000,000,000,000,000'