Romano a Decimal y Viceversa

Iniciado por BitCde, Julio 03, 2018, 10:22:02 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 03, 2018, 10:22:02 PM Ultima modificación: Julio 04, 2018, 02:32:15 PM por Gabriela
Que tal compañeros como andan? bueno verán llevo un tiempo aquí en este magnifico foro y no me había animado a hacer ningún post hasta ahora, pero en esta ocasión quiero compartirles un sencillo programita que desarrolle (cabe aclarar que soy un novato en python ;D pero ya saben lo que dicen "la practica hace al maestro"). Bueno volviendo al tema este pequeño script convierte de Romano a Decimal y Viceversa

Código: php

def num_roman():

    num_map = [(1000, 'M'), (900, 'CM'), (500, 'D'), (400, 'CD'), (100, 'C'), (90, 'XC'),
           (50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')]

    num = int(input("DECIMAL: "))
    roman = ''
    while num > 0:
        for i, r in num_map:
            while num >= i:
                roman += r
                num -= i

    print("\t-------------",roman,"-------------")

def roman_num():
    values=(("M", 1000),
        ("CM", 900),
        ("D",  500),
        ("CD", 400),
        ("C", 100),
        ("XC", 90),
        ("L", 50),
        ("XL", 40),
        ("X", 10),
        ("IX", 9),
        ("V", 5),
        ("IV", 4),
        ("I", 1)
        )

    result = 0
    lista = []
    romano = input("ROMANO: ")

    if romano.upper().count("X")>3 or romano.upper().count("I")>3 or romano.upper().count("V")>3 or romano.upper().count("L")>3 or romano.upper().count("D")>3 or romano.upper().count("M")>3:
       
        print("[X]")

    else:

        for i in range(len(romano.upper())):
            for letter, value in values:
                if romano.upper()[i] == letter:
                    lista.append(value)

        lista.append(0)

        for i in range(len(romano.upper())):
            if lista[i] >= lista[i+1]:
                result = result + lista[i]
            else:
                result = result - lista[i]

    print("\t-------------",result,"-------------")

def choose():

    print  (" _______|______________________________________|_______")
    print  (" \      |                                     |      /")
    print   ("  \     |         1)Decimal to Roman          |     /")
    print   ("  \     |         2)Roman to Decimal          |     /")
    print   ("  /     |____________________________ ________|     \ ")
    print  (" /_________)                                (________\ ")

    opc = int(input("INGRESE UNA OPCION: "))

    if opc == 1:
        num_roman()
    elif opc == 2:
        roman_num()
    else:
        print("Error")

if __name__ == '__main__':
    choose()


se que existen mejores maneras de hacerlo y mas completas, pero aun asi quise compartirlo con ustedes 

Saludos a todos!
La mayoría de los hombres no carecen de fuerza, sino de constancia