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')