Facebook
From poippè, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 140
  1. import copy
  2. import sys
  3.  
  4. def numero_romano(var):
  5.     numero_romano = var
  6.  
  7.     numero_romano = numero_romano.upper()
  8.  
  9.     diz = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
  10.     l = []
  11.     for n in numero_romano:
  12.         l.append(diz[n])
  13.  
  14.     numero_in_numero_romano = l  # 100,100,200,10,1,10,1,10]
  15.     cattura_numeri_da_sottrarre = []
  16.     for x in range(len(numero_in_numero_romano)):
  17.         p = x + 1
  18.  
  19.         if p == len(numero_in_numero_romano):
  20.  
  21.             break
  22.         else:
  23.             if numero_in_numero_romano[x] < numero_in_numero_romano[p]:
  24.                 pass
  25.                 cattura_numeri_da_sottrarre.append(numero_in_numero_romano[x])
  26.                 cattura_numeri_da_sottrarre.append(numero_in_numero_romano[p])
  27.  
  28.     cattura_numeri_da_sommare = copy.deepcopy(numero_in_numero_romano)
  29.  
  30.     for x in cattura_numeri_da_sottrarre:
  31.         if x in cattura_numeri_da_sommare:
  32.             p = cattura_numeri_da_sommare.index(x)
  33.             cattura_numeri_da_sommare[p] = 0
  34.             # del cattura_numeri_da_sommare[p]
  35.             # cattura_numeri_da_sommare.insert(p, 0)
  36.  
  37.     sottratti = 0
  38.     for x in range(0, len(cattura_numeri_da_sottrarre) - 1, 2):
  39.         sottratti += cattura_numeri_da_sottrarre[x] - cattura_numeri_da_sottrarre[x - 1]
  40.  
  41.     somma_totale = abs(sottratti) + sum(cattura_numeri_da_sommare)
  42.     somma_totale =str(somma_totale)
  43.     val = numero_decimale(somma_totale)
  44.     print(val)
  45.     print(numero_romano)
  46.     if val == numero_romano:
  47.         return somma_totale
  48.     else:
  49.         return 'numero scritto male'
  50.  
  51.  
  52.  
  53.  
  54.  
  55. def numero_decimale(var):
  56.     numero_romano = var
  57.     unita = {'1': 'I', '2': 'II', '3': 'III', '4': 'IV', '5': 'V', '6': 'VI', '7': 'VII', '8': 'IX', '9': 'XI'}
  58.     decine = {'1': 'X', '2': 'XX', '3': 'XXX', '4': 'XL', '5': 'l', '6': 'LX', '7': 'LXX', '8': 'LXXX', '9': 'XC'}
  59.     centinaia = {'1': 'C', '2': 'CC', '3': 'CCC', '4': 'CD', '5': 'D', '6': 'DX', '7': 'DXX', '8': 'DXXX', '9': 'CM'}
  60.     indice = 0
  61.     numero_romano_in_lista_già_convertito = []
  62.  
  63.     while indice != 10:
  64.         if len(numero_romano) == 1:
  65.             print(unita[numero_romano])
  66.  
  67.             indice = 10
  68.  
  69.         elif len(numero_romano) == 2:
  70.             numero_romano_in_lista_già_convertito.append(decine[numero_romano[0]])
  71.             numero_romano_in_lista_già_convertito.append(unita[numero_romano[1]])
  72.             indice = 10
  73.  
  74.         elif len(numero_romano) == 3:
  75.             numero_romano_in_lista_già_convertito.append(centinaia[numero_romano[0]])
  76.  
  77.             numero_romano_in_lista_già_convertito.append(decine[numero_romano[1]])
  78.             numero_romano_in_lista_già_convertito.append(unita[numero_romano[2]])
  79.  
  80.             indice = 10
  81.  
  82.     stampa_del_numero = ''.join(numero_romano_in_lista_già_convertito)
  83.     return  stampa_del_numero
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99. menu = 55
  100. while menu != 100:
  101.     print('==' * 100)
  102.     print('Spingi 1 per convertire numero romano in decimale \nSpingi 2 per convertire numero decimale in numero romano\nSpingi 3 per uscire')
  103.     print('==' * 100)
  104.  
  105.     try:
  106.         menu = int(input('Inserisci scelta   '))
  107.  
  108.         if menu == 1:
  109.             try:
  110.                 var = input('inserisci il numero romano\n')
  111.  
  112.  
  113.  
  114.                 print(f'il numero{var}, è uguale numero_romano {numero_romano(var)}')
  115.  
  116.             except KeyError:
  117.                 print('scrivi bene')
  118.             menu = 55
  119.  
  120.         elif menu == 2:
  121.             try:
  122.                 var = input('Inserisci numero decimale')
  123.  
  124.                 print(f'il numero{var}, è uguale numero_romano {numero_decimale(var)}')
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.             except ValueError:
  133.                 print('scrivi bene')
  134.             menu = 55
  135.         elif menu == 3:
  136.  
  137.             print('ciao')
  138.  
  139.  
  140.  
  141.             menu = 100
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.     except ValueError:
  152.         print('Scrivi bene')
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.