Forum >> Principianti >> Numeri Romani

Pagina: 1

Buongiorno a tutti devo realizzare un convertitore num arabi --> romani
usando solo ed esclusivamente stringhe da concatenare
ho realizzato il seguente codice
def migliaia(anno):
    #k = ""
    if anno0 == 1 : k = "M"
    if anno0 == 2 : k = "MM"
    if anno0 == 3 : k = "MMM"
    return k

def centinaia(anno):
    #c = ""
    if anno1 == 1 : c = "C"
    if anno1 == 2 : c = "CC"
    if anno1 == 3 : c = "CCC"
    if anno1 == 4 : c = "CD"
    if anno1 == 5 : c = "D"
    if anno1 == 6 : c = "DC"
    if anno1 == 7 : c = "DCC"
    if anno1 == 8 : c = "DCCC"
    if anno1 == 9 : c = "CM"
    return c

def decine(anno):
    #d = ""
    if anno2 == 1 : d = "X"
    if anno2 == 2 : d = "XX"
    if anno2 == 3 : d = "XXX"
    if anno2 == 4 : d = "XL"
    if anno2 == 5 : d = "L"
    if anno2 == 6 : d = "LX"
    if anno2 == 7 : d = "LXX"
    if anno2 == 8 : d = "LXXX"
    if anno2 == 9 : d = "XC"
    return d

def unita(anno):
    #u = ""
    if anno3 == 1 : u = "I"
    if anno3 == 2 : u = "II"
    if anno3 == 3 : u = "III"
    if anno3 == 4 : u = "IIII"
    if anno3 == 5 : u = "V"
    if anno3 == 6 : u = "VI"
    if anno3 == 7 : u = "VII"
    if anno3 == 8 : u = "VIII"
    if anno3 == 9 : u = "IX"
    return u

def elaborazione (anno):
    
    K = migliaia(anno)
    H = centinaia(anno)
    DA = decine(anno)
    U = unita(anno)
    temp = K + H + DA + U
    print (temp)
    return temp

def main():
    anno = input(" Inserisci la data da convertire ")
    while int(anno)>3999:
        print ( " Valore non corretto ")
        print ( " inserisci nuovo valore ")
        anno = input(" Inserisci la data da convertire ")
    roman = elaborazione (anno)
    print (roman)

main ()

ma ottendo come out put questo messaggio sulla shell
Traceback (most recent call last):
File "C:/Users/salvatore&fabio/Desktop/file python/P3.28.py", line 67, in <module>
main ()
File "C:/Users/salvatore&fabio/Desktop/file python/P3.28.py", line 64, in main
roman = elaborazione (anno)
File "C:/Users/salvatore&fabio/Desktop/file python/P3.28.py", line 50, in elaborazione
K = migliaia(anno)
File "C:/Users/salvatore&fabio/Desktop/file python/P3.28.py", line 7, in migliaia
return k
UnboundLocalError: local variable 'k' referenced before assignment

come mai? eppure mi sembra un codice molto banale e per niente elegante
Grazie a chi mi risponderà
Salvatore

in `migliaia(anno)`, `anno` è una stringa. pertanto, il confronto con gli interi `1`, `2`, e `3` darà sempre risultato falso, e quindi verrà eseguita l'istruzione `return k` senza che a `k` sia stato assegnato alcun valore, causando appunto un UnboundLocalError.
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Ciao grazie per la replica è vero avevo dimenticato la conversione
grazie infinite
Salvatore

ricordati di testare il programma anche per anni precedenti al primo millennio ;)
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
ottima dritta la consegna dell'esercizio non la prevedeva la farò
io per allenamento
Grazie infinite


Pagina: 1



Esegui il login per scrivere una risposta.