Форум сайта python.su
Подскажите пожалуйста, как сделать разделение чисел по тысячам?
например, если число: 1234567890, то мне надо чтоб было: 1,234,567,890
if price >= 10000:
price = "<font color=00CCFF>"+str(price)+"</font>"
elif price >= 100000:
price = "<font color=FF0099>"+str(price)+"</font>"
elif price >= 1000000:
price = "<font color=FFCC00>"+str(price)+"</font>"
elif price >= 10000000:
price = "<font color=00FF66>"+str(price)+"</font>"
elif price >= 100000000:
price = "<font color=33CCCC>"+str(price)+"</font>"
elif price >= 1000000000:
price = "<font color=FF0066>"+str(price)+"</font>"
else:
price = "<font color=FFFFFF>"+str(price)+"</font>"
Офлайн
O_O
Лобовое:
number = 1234567890
counter = 0
formatted_number = ''
for i in reversed(str(number)):
counter += 1
formatted_number += i
if counter==3:
formatted_number += ','
counter = 0
print formatted_number[::-1]
Офлайн
Ferroman, благодарю!
Офлайн
упс, проблема с числами вида: 123, 123456, 123456789.
он ставит запятую перед ними.
Офлайн
Ну, такую проблему, можно и самому решить.
Офлайн
Ferromanспасибо =) окончательный вариант у меня выглядит так:
Ну, такую проблему, можно и самому решить.
fprice = str(price)
fprice = fprice[::-1]
counter = 0
formatted_number = ''
for i in str(fprice):
counter += 1
formatted_number += i
if counter==3:
if price <1000:
formatted_number += ''
counter = 0
elif price > 1000 and price <1000000:
formatted_number += ','
counter = -1
else:
formatted_number += ','
counter = 0
pricee = formatted_number[::-1]
Офлайн
У нас уже строка. Зачем столько сравнений в цикле, когда надо просто убрать 1 символ, если он есть?
number = 123456
counter = 0
formatted_number = ''
for i in str(number)[::-1]: # переворачиваем строку
counter += 1
formatted_number += i
if counter==3:
formatted_number += ','
counter = 0
formatted_number = formatted_number[::-1] # переворачиваем строку назад.
if formatted_number[0]==',':
formatted_number = formatted_number[1:] # если есть запятая перед числом - убираем.
print formatted_number
Отредактировано (Сен. 1, 2008 19:20:04)
Офлайн
import locale
locale.setlocale(locale.LC_NUMERIC, 'English_United States.1252')
print locale.format('%d', 12345, True)
Отредактировано (Сен. 1, 2008 19:41:50)
Офлайн
FerromanВ этом коде засада с отрицательными числами
У нас уже строка. Зачем столько сравнений в цикле, когда надо просто убрать 1 символ, если он есть?Код можно укоротить, оптимизировать, если хочется красивше. Ну и вообще как функцию его описать надо бы.number = 123456
counter = 0
formatted_number = ''
for i in str(number)[::-1]: # переворачиваем строку
counter += 1
formatted_number += i
if counter==3:
formatted_number += ','
counter = 0
formatted_number = formatted_number[::-1] # переворачиваем строку назад.
if formatted_number[0]==',':
formatted_number = formatted_number[1:] # если есть запятая перед числом - убираем.
print formatted_number
Офлайн
В этом коде засада не только с отрицательными, но и с дробями.
Офлайн