Numeri

Fase Territoriale 2001

Scrivete un programma che, dato un numero intero compreso tra 1 e 99 inclusi, scriva la parola italiana corrispondente.

Dati in input

Un numero compreso tra 1 e 99 inclusi.

Dati in output

Il programma deve fornire la parola corrispondente in italiano.

Assunzioni

  1. Qualora lo stesso numero possa essere espresso in più forme, scegliere sempre la più breve (per esempio, “ventuno” e non “ventiuno” o “ventieuno”, “ottantuno” e non “ottantauno” o “ottantaeuno”).
    Nel caso precedente, scrivere “ventieuno” al posto di “ventuno” è considerato un errore.
    Allo stesso modo, uno spazio nella parola è considerato un errore.
  2. I caratteri accentati devono essere inseriti privi di accento (per esempio, “trentatre” e non “trentatrè” o “trentatre’”).

Esempi

InputOutput
12dodici
23ventitre
88ottantotto

cifre = [
    "zero"    , "uno"        , "due"        , "tre"       ,
    "quattro" , "cinque"     , "sei"        , "sette"     ,
    "otto"    , "nove"       , "dieci"      , "undici"    ,
    "dodici"  , "tredici"    , "quattordici", "quindici"  ,
    "sedici"  , "diciassette", "diciotto"   , "diciannove"
]
decine = [
    "venti"   , "trenta"  , "quaranta", "cinquanta",
    "sessanta", "settanta", "ottanta" , "novanta"
]
#------------------------------------------------------------------- 
N = 98                
#-------------------------------------------------------------------   
if(N < 20):
    numero = cifre[N]
else:
    decina = N // 10
    unita  = N %  10
    numero = decine[decina-2]
    if(unita != 0):
        if(unita == 1) or (unita == 8):
            numero = numero[:-1]
        numero += cifre[unita]
#-------------------------------------------------------------------
print(numero)

La lingua italiana vuole “tre” accentato se alla fine della parola composta

  • ventitré
  • trentatré
        cifra = cifre[unita]
        if(unita == 1) or (unita == 8):
            numero = numero[:-1]
        elif(unita == 3):
            cifra  = "tré"
        numero += cifra