- import copy
- import sys
- def numero_romano(var):
- numero_romano = var
- numero_romano = numero_romano.upper()
- diz = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
- l = []
- for n in numero_romano:
- l.append(diz[n])
- numero_in_numero_romano = l # 100,100,200,10,1,10,1,10]
- cattura_numeri_da_sottrarre = []
- for x in range(len(numero_in_numero_romano)):
- p = x + 1
- if p == len(numero_in_numero_romano):
- break
- else:
- if numero_in_numero_romano[x] < numero_in_numero_romano[p]:
- pass
- cattura_numeri_da_sottrarre.append(numero_in_numero_romano[x])
- cattura_numeri_da_sottrarre.append(numero_in_numero_romano[p])
- cattura_numeri_da_sommare = copy.deepcopy(numero_in_numero_romano)
- for x in cattura_numeri_da_sottrarre:
- if x in cattura_numeri_da_sommare:
- p = cattura_numeri_da_sommare.index(x)
- cattura_numeri_da_sommare[p] = 0
- # del cattura_numeri_da_sommare[p]
- # cattura_numeri_da_sommare.insert(p, 0)
- sottratti = 0
- for x in range(0, len(cattura_numeri_da_sottrarre) - 1, 2):
- sottratti += cattura_numeri_da_sottrarre[x] - cattura_numeri_da_sottrarre[x - 1]
- somma_totale = abs(sottratti) + sum(cattura_numeri_da_sommare)
- somma_totale =str(somma_totale)
- val = numero_decimale(somma_totale)
- print(val)
- print(numero_romano)
- if val == numero_romano:
- return somma_totale
- else:
- return 'numero scritto male'
- def numero_decimale(var):
- numero_romano = var
- unita = {'1': 'I', '2': 'II', '3': 'III', '4': 'IV', '5': 'V', '6': 'VI', '7': 'VII', '8': 'IX', '9': 'XI'}
- decine = {'1': 'X', '2': 'XX', '3': 'XXX', '4': 'XL', '5': 'l', '6': 'LX', '7': 'LXX', '8': 'LXXX', '9': 'XC'}
- centinaia = {'1': 'C', '2': 'CC', '3': 'CCC', '4': 'CD', '5': 'D', '6': 'DX', '7': 'DXX', '8': 'DXXX', '9': 'CM'}
- indice = 0
- numero_romano_in_lista_già_convertito = []
- while indice != 10:
- if len(numero_romano) == 1:
- print(unita[numero_romano])
- indice = 10
- elif len(numero_romano) == 2:
- numero_romano_in_lista_già_convertito.append(decine[numero_romano[0]])
- numero_romano_in_lista_già_convertito.append(unita[numero_romano[1]])
- indice = 10
- elif len(numero_romano) == 3:
- numero_romano_in_lista_già_convertito.append(centinaia[numero_romano[0]])
- numero_romano_in_lista_già_convertito.append(decine[numero_romano[1]])
- numero_romano_in_lista_già_convertito.append(unita[numero_romano[2]])
- indice = 10
- stampa_del_numero = ''.join(numero_romano_in_lista_già_convertito)
- return stampa_del_numero
- menu = 55
- while menu != 100:
- print('==' * 100)
- print('Spingi 1 per convertire numero romano in decimale \nSpingi 2 per convertire numero decimale in numero romano\nSpingi 3 per uscire')
- print('==' * 100)
- try:
- menu = int(input('Inserisci scelta '))
- if menu == 1:
- try:
- var = input('inserisci il numero romano\n')
- print(f'il numero{var}, è uguale numero_romano {numero_romano(var)}')
- except KeyError:
- print('scrivi bene')
- menu = 55
- elif menu == 2:
- try:
- var = input('Inserisci numero decimale')
- print(f'il numero{var}, è uguale numero_romano {numero_decimale(var)}')
- except ValueError:
- print('scrivi bene')
- menu = 55
- elif menu == 3:
- print('ciao')
- menu = 100
- except ValueError:
- print('Scrivi bene')