algorytm.org

Implementacja w Python



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Zamiana liczby na słowa z polską gramatyką - Implementacja w Python
Ocena użytkownikóww: *****  / 3
SłabyŚwietny
Nadesłany przez Stefan Pruszkiewicz, 01 marca 2018 16:45
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

zlns_gramatyka.py:
# Zamiana liczby na slowa z polska gramatyka
# www.algorytm.org

def Slownie (Liczba):    
    Liczby = [
        [''         ,''               ,''                 ,''            ],
        ['jeden '   ,'jedenascie '    ,'dziesiec '        ,'sto '        ],
        ['dwa '     ,'dwanascie '     ,'dwadziescia '     ,'dwiescie '   ],
        ['trzy '    ,'trzynascie '    ,'trzydziesci '     ,'trzysta '    ],
        ['cztery '  ,'czternascie '   ,'czterdziesci '    ,'czterysta '  ],
        ['piec '    ,'pietnascie '    ,'piecdziesiat '    ,'piecset '    ],
        ['szesc '   ,'szesnascie '    ,'szescdziesiat '   ,'szescset '   ],
        ['siedem '  ,'siedemnascie '  ,'siedemdziesiat '  ,'siedemset '  ],
        ['osiem '   ,'osiemnascie '   ,'osiemdziesiat '   ,'osiemset '   ],
        ['dziewiec ','dziewietnascie ','dziewiecdziesiat ','dziewiecset ']]

    Grupy = [
        [''        ,''         ,''          ],
        ['tysiac ' ,'tysiace ' ,'tysiecy '  ],
        ['milion ' ,'miliony ' ,'milionow ' ],
        ['miliard ','miliardy ','miliardow '],
        ['bilion ' ,'biliony ' ,'bilionow ' ],
        ['biliard ','biliardy ','biliardow '],
        ['trylion ','tryliony ','trylionow ']]

    J, N, D, S, G, K = 0, 0, 0, 0, 0, 0     #Jednostki,Nastki,Dziesiatki,Setki,Grupy,Koncowki
    Ciag, Znak = "", ""
    
    if Liczba < 0:
        Znak = "minus "
        Liczba = -Liczba
    if Liczba == 0:
        Ciag = "zero "
    while not Liczba == 0:
        S = Liczba % 1000 // 100
        D = Liczba % 100 // 10
        J = Liczba % 10
        if D == 1 and J > 0:                #Warunek do obsługi nastek
            N = J
            D = 0
            J = 0
        else:
            N = 0
        if J == 1:                          #Tu zawiera sie cała gramatyka, wybór końcówki
            if S + D + N > 0:
                K = 2
            else:
                K = 0;
        elif J in [2,3,4]:
            K = 1
        else:
            K = 2        
        if S + D + N + J > 0:
            Ciag = Liczby[S][3] + Liczby[D][2] + Liczby[N][1] + Liczby[J][0] + Grupy[G][K] + Ciag
        G = G + 1
        Liczba = Liczba // 1000;
    return Znak + Ciag
    
print(Slownie(9223372036854775807))
Dodaj komentarz