Opisowe statystyki

0

Witam

Mój program wypisuje pisemne określenia dla wprowadzonej z argumentu liczby (np. dla liczby 41221273467 wypisuje 41 mld 221 mln 273 k 467) . Co można w nim poprawić żeby był bardziej zrozumiały i żeby przy wprowadzeniu jeszcze większych jednostek (biliony, tryliony itd.) kod tak bardzo się nie rozrastał?

s = sys.argv[1]
if not s.isdigit():
    print "Try again!"
    sys.exit()
if len(s) < 7 and len(s) > 3:
    print s[:-3]+" k "+s[-3:]
elif len(s) < 10 and len(s) > 6:
    print s[:-6]+" mln "+s[-6:-3]+" k "+s[-3:]
elif len(s) < 13 and len(s) > 9:
    print s[:-9]+" mld "+s[-9:-6]+" mln "+s[-6:-3]+" k "+s[-3:]
elif len(s) > 0 and len(s) < 4:
    print s
0

Zrób tablicę jednostek, a potem w pętli co 3 znaki dodawaj kolejną jednostkę z tablicy jednostek.

Do pętli dodaj jakiegoś guarda (na bazie elementów w tablicy) w przypadku gdy liczba będzie większa niż ilość dostępnych jednostek. Rozwinięcie programu wtedy to po prostu dopisanie kolejnej jednostki do tablicy.

0
number = 1241221273467
units = ['bln', 'mld', 'mln', 'tys', '']
str_number = str(number)
result = ""
while len(str_number)>0:
    part = str_number[-3:]
    str_number = str_number[:-3]
    result = "{} {} {}".format(part, units.pop(), result)

print(result)

Da się do napisać dużo lepiej, ale masz przynajmniej bazę. W units wystarczy że dodasz kolejne jednostki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1