Forum
>>
Principianti
>>
Numeri Romani
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da SalvCai |
2018-01-10 11:21:16 - Numeri Romani
|
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 |
|
Scritto da ㎝ |
2018-01-10 11:44:34 - Re: Numeri Romani
|
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 ㊷):
<㎝🐌🐍.🇮🇹> 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. -- ㎝ |
|
Scritto da SalvCai |
2018-01-10 15:47:53 - Re: Numeri Romani
|
Ciao grazie per la replica è vero avevo dimenticato la conversione
grazie infinite Salvatore |
|
Scritto da ㎝ |
2018-01-10 15:57:50 - Re: Numeri Romani
|
ricordati di testare il programma anche per anni precedenti al primo millennio
THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> 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. -- ㎝ |
|
Scritto da SalvCai |
2018-01-10 16:19:28 - Re: Numeri Romani
|
ottima dritta la consegna dell'esercizio non la prevedeva la farò
io per allenamento Grazie infinite |
|
Scritto da Spam Spam |
2024-11-13 08:30:02 - Re: Numeri Romani
|
Pagina: 1
Esegui il login per scrivere una risposta.