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 
  
 | 
      
| 
          
Scritto da Jimmy Mcgill  | 
        
          
 2025-04-23 05:01:17 - Re: Numeri Romani 
  
 | 
      
Pagina: 1
Esegui il login per scrivere una risposta.
  
