“Красивые” цены # Nice price formatting # nice_price

Классика жанра - отформатировать вывод цены: “1000” вывести как “1 000”. Наверное, после ещё пары-тройки лет программирования на питоне у меня получится написать это покороче :))

Пока же - вот:

def nice_price(price, delimiter=','):
    """
    Красиво отформатировать цену - через каждые 3 знака
    ставится разделитель, копейки не учитываются.
    
    Примеры
    -------
        >>> print nice_price(1000)
        1,000
        >>> print nice_price(10500)
        10,500
        >>> print nice_price(123000, ' ')
        123 000

    """
    try:
        price = int(price)
    except TypeError:
        price = 0
    
    nice = ''
    while price >= 1000:
        nice = delimiter + '%.3d%s' % (price % 1000, nice)
        price = price / 1000
    if nice:
        nice = '%s%s' % (price, nice)
    else:
        nice = '%s' % price
    return nice

Notes

  1. rudyryk posted this