Curso Python 3 desde cero
Curso de programación Python 3 desde cero - En esta entrega del curso de programación Python desde cero, realizaremos el cuarto proyecto final de este curso.
En este proyecto realizaremos un programa que permita convertir un número entero a su equivalente en números romanos, con las siguientes especificaciones:
• El programa deberá solicitar al usuario que ingrese un número entero.
• El programa solo aceptara números enteros en un rango entre 1 y 3999.
¡¡Ayúdame a seguir creciendo, te invito a suscribirte!!
La Geekipedia de Ernesto
➞ Facebook / lageekipediadeernesto
➞ Instagram / lageekipedia
➞ Twitter / lageekipedia
═════════════════════════════════════════
¿Te gustaría que este contenido siga siendo gratuito?, puedes apoyar al canal de las siguientes maneras:
➞ Donaciones: www.paypal.me/LaGeekipedia
➞ Desactivando Adblock y Adblock Plus en KZread.
➞ Compartiendo los vídeos del canal en foros y redes sociales.
➞ Con tu suscripción, comentando o un like.
Cualquier opción es de gran ayuda. ¡Muchas gracias!
═════════════════════════════════════════
• Descarga del programa: mega.nz/file/UdB1lCIT#FaegZUm...
═════════════════════════════════════════
Todos mis cursos:
➞ Curso de programación para el desarrollo de lógica:
• Curso de programación ...
➞ Curso de programación Python desde cero:
• Curso de programación ...
➞ Curso de programación Java desde cero:
• Curso de programación ...
➞ Curso de programación Java intermedio:
• Curso de programación ...
➞ Curso de programación Android desde cero:
• Curso de programación ...
Пікірлер: 22
Muchas gracias Ernesto!! Estos ejercicios prácticos y proyectos finales ayudan mucho a desarrollar la lógica de programación con lo que hemos ido aprendiendo a lo largo del curso. Contento de haber llegado en este caso a una solución muy similar a la tuya. Pongo a continuación la solución que había propuesto yo... romano = [("", "M", "MM", "MMM"), ("", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"), ("", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"), ("", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"),] try: entero = int(input("Ingresa un número entero para convertirlo a romano: ")) if 0 millar = entero // 1000 centena = entero % 1000 // 100 decena = entero % 100 // 10 unidad = entero % 10 print(romano[0][millar] + romano[1][centena] + romano[2][decena] + romano[3][unidad]) else: print("El número ingresado debe estar en un rango entre 1 y 3999") except ValueError: print("Debes ingresas un valor entero.") except Exception as e: print("Valor no válido: ", e)
Hola Ernesto, excelentes tus videos, me han ayudado muchísimo. Comparto mi solución para este ejercicio: dict_rom_inv ={1000:"M",900:"CM",500:"D",400:"CD",100:"C",90:"XC",50:"L",40:"XL",10:"X",9:"IX",5:"V",4:"IV",3:"III",2:"II",1:"I"} try: num = int(input("Ingresa un número entero para convertirlo a romano: ")) if 1
Aguante La Geekipedia De Ernesto, el mejor curso de Python en youtube. Saludos desde Argentina, gracias profe
Muchas gracias
Ya lo hice. estuvo muy bueno, gracias. (Lo hace ver tan fácil :( ) romanos = "MCXI" romanos_medio = "_DLV" valor = input("Ingresa un número entero para convertirlo a romano: ") equivalencia = "" try: if len(valor) for _ in range(4-len(valor)): valor = "0" + valor if int(valor) in range(1,4000): contador = -1 for x in valor: if int(x) == 0: contador += 1 continue elif int(x) in range(1,4): contador += 1 p = romanos[contador] for _ in range(int(x)): equivalencia += p elif int(x) in range(4,9): contador += 1 p = romanos[contador] m = romanos_medio[contador] if int(x) == 4: equivalencia += p equivalencia += m elif int(x) == 5: equivalencia += m else: equivalencia += m for _ in range(int(x)-5): equivalencia += p else: contador += 1 p = romanos[contador] p1 = romanos[contador-1] print(equivalencia) else: print("El número ingresado debe de estar en unn rango entre 1 y 3999") except Exception: print("Debes de ingresar un valor entero")
Buen video, como todos.
Al final lo hice pero tuve que usar una parte de la alternativa que tú ofreciste, al parecer fue mal haber subestimado este proyecto, y yo decia que era fácil, pero aún así me gustó. ;'p ❤
Al principio se me ocurrio una forma parecida a la que tu hiciste, pero me parecio muy fácil, asi que lo cambio a uno un poco más complejo try: a = int(input("Ingrese un numero entero para convertirlo a romano: ")) u = {1000: 'M', 500: 'D', 100: 'C', 50: 'L', 10: 'X', 5: 'V', 1: 'I', } nu = list(u.items()) li = a resul = 0 b = 0 if a > 3999 or a print("el numero ingresado debe estar en un rango entre 1 y 3999") else: for i in range(len(nu)): if (li + 1) in u or (li + 10) in u or (li + 100) in u or b > 3: for o in range(len(nu) - 1, 0, -2): r = nu[o][1] if nu[o][0] for t in range(nu.index(nu[o]) - 2, nu.index(nu[o])): if nu[t][0] > li and nu[t + 1][0] print(f"{r}{nu[t][1]}", end="") resul = nu[t][0] - nu[o][0] else: continue li = li - resul if li == 0: break b = int(li / nu[i][0]) if b 3: continue if li > 90 and li continue for e in range(b): print(nu[i][1], end="") li = li - (b * nu[i][0]) except ValueError: print("debe ingresar un valor entero")
se me cocino el cerebro pensando en todo para que el programa funcione y despues de ver el video me di cuenta que era una tonteria, aun asi les mando todo lo que hice para llegar al mismo resultado num = list(input("introduce un numero para pasar a romano: ")) try: num = [int(i) for i in num] indice = int(len(num)) roma = "" for n in num: if indice == 4: if n for i in range(1, n + 1): roma += "M" else: print("solo se permiten numeros de el 1 hasta el 3999") break elif indice == 3: if n for c in range(1, n + 1): roma += "C" elif n == 4: roma += "CD" elif n > 4 and n roma += "D" if n > 5: for d in range(6, n + 1): roma += "C" elif n == 9: roma += "CM" elif indice == 2: if n for dc in range(1, n + 1): roma += "X" elif n == 4: roma += "XL" elif n > 4 and n roma += "L" if n > 5: for dc in range(6, n + 1): roma += "X" elif n == 9: roma += "XC" elif indice == 1: if n for u in range(1, n + 1): roma += "I" elif n == 4: roma += "IV" elif n > 4 and n roma += "V" if n > 5: for u in range(6, n + 1): roma += "I" elif n == 9: roma += "IX" indice -= 1 print(roma) except ValueError: print("solo se admiten numeros enteros")
@EDAN1351
8 ай бұрын
me olvide copiar el ultimo except
Me resulto dificil pero no me espera ese método que mostraste, aun asi mi idea era hacerlo compacto, les comparto haber que les parece num=input("Ingrese un numero entero: ") num=[int(char) for char in num] ro={1:"I",5:"V",10:"X",50:"L",100:"C",500:"D",1000:"M"} r=[0,5,10] for i in range(len(num)): for n in r: if num[i]==0: break if abs(num[i]-n)0: c3=(num[i]-n)*c2 c1=c1+c3 if num[i]-n
no entiendo porque dice unidades de millon si son millar; miles, no son millones.....
try: numero = int(input("Ingresa un numero entero para convertir a romano: ")) romano = "" if 0 numero = str(numero) serie = "123456789" longitud = len(numero) for ind, i in enumerate(numero): if i in serie: pos = longitud - ind if pos == 4: i = int(i) romano = "M" * i elif pos == 3: i = int(i) if i romano += "C" * i elif i == 4: romano += "CD" elif i == 5: romano += "D" elif 5 i = i - 5 romano += "D" + "C" * i elif i == 9: romano += "CM" elif pos == 2: i = int(i) if i romano += "X" * i elif i == 4: romano += "XL" elif i == 5: romano += "L" elif 5 i = i - 5 romano += "L" + "X" * i elif i == 9: romano += "XC" elif pos == 1: i = int(i) if i romano += "I" * i elif i == 4: romano += "IV" elif i == 5: romano += "V" elif 5 i = i - 5 romano += "V" + "I" * i elif i == 9: romano += "IX" else: print("El número ingresado debe de estar en un rango entre 1 y 3999") print(romano) except Exception as error: print("Debes ingresar un numero entero. ", error)
Mi solución: print(" BIENVENIDO AL PROGRAMA QUE TRANSFORMA NÚMEROS ENTEROS EN NÚMEROS ROMANOS: ") salir = 0 while salir == 0: try: print("Menu: ") opcion = int (input(" '1'- Ingresar un número '2'- Finalizar el programa. \tSu opcion: ")) except ValueError as ve: print(" \tDebe ingresar un número entero. ") except Exception as e: print(" \tDebe ingresar un número entero. ") else: if opcion ==1: try: num = int (input("Ingrese un numero entero entre 1 - 3999: ")) except ValueError as ve: print(" \tDebe ingresar un número entero. ") except Exception as e: print(" \tDebe ingresar un número entero. ") else: if num 3999: print(" \tIngrese un número entre 1 y 3999. ") else: unidades = {0: "", 1: "I", 2: "II", 3: "III", 4: "IV", 5: "V", 6: "VI", 7: "VII", 8: "VIII", 9: "IX"} decenas = {0: "", 10: "X", 20: "XX", 30: "XXX", 40: "XL", 50: "L", 60: "LX", 70: "LXX", 80: "LXXX", 90: "XC" } centenas = { 0: "", 100: "C", 200: "CC", 300: "CCC", 400: "CD", 500: "D", 600: "DC", 700: "DCC", 800: "DCCC", 900: "CM"} milares = { 0: "", 1000: "M", 2000: "MM", 3000: "MMM"} aux_milar = num % 1000 milar = num - aux_milar aux_centena = aux_milar % 100 centena = aux_milar - aux_centena aux_decena = aux_centena % 10 decena = aux_centena - aux_decena unidad = aux_decena print(f"Equivalente a número romano: {milares[milar]}{centenas[centena]}{decenas[decena]}{unidades[unidad]} ") salir =0 else: salir = 1 print(" Fin del programa.")
Despues de 7 horas termine, sinceramente deberia practicar mas con las funciones matematicas de python, numerosRomanos = {1: "I", 2: "II", 3: "III", 4: "IV", 5: "V", 9: "IX", 10: "X", 40: "XL", 50: "L", 90: "XC", 100: "C", 200: "CC", 300: "CCC", 400: "CD", 500: "D", 900: "CM", 1000: "M", 0: " "} s = 0 try: a = int(input("Ingresa un numero para empezar la conversion ")) b = str(a) c = a e = a if len(b) == 1: if a print(numerosRomanos[a]) if a > 5 and a c -= 5 print(numerosRomanos[5], numerosRomanos[c]) if a == 9: print(numerosRomanos[c]) if len(b) == 2: if a > 9 and a c //= 10 e %= 10 if c while s s += 10 print(numerosRomanos[10], end="") if e > 5 and e e -= 5 print(numerosRomanos[5], numerosRomanos[e]) else: print(numerosRomanos[e]) if a > 39 and a c //= 10 e %= 10 print(numerosRomanos[c*10], end="") if e > 5 and e e -= 5 print(numerosRomanos[5], numerosRomanos[e]) else: print(numerosRomanos[e]) if a >= 50 and a c -= 50 c //= 10 e %= 10 print(numerosRomanos[50], end="") if a >= 60 and a while s s += 10 print(numerosRomanos[10], end="") if e > 5 and e e -= 5 print(numerosRomanos[5], numerosRomanos[e]) else: print(numerosRomanos[e]) if a >= 90 and a e -= 90 print(numerosRomanos[90], end="") if e > 5 and e e -= 5 print(numerosRomanos[5], numerosRomanos[e]) else: print(numerosRomanos[e]) if len(b) == 3: o = a q = c e %= 10 c = o % 100 c //= 10 c = c * 10 q -= c if q > 99 and q print(numerosRomanos[q], end= "") if q > 599 and q q -= 500 print(numerosRomanos[500], numerosRomanos[q], end="") if q >= 900 and q print(numerosRomanos[900], end="") if c > 9 and c s = 0 while s s += 10 print(numerosRomanos[10], end="") if c == 40: print(numerosRomanos[c], end="") if c == 50: print(numerosRomanos[c], end="") if c > 50 and c print(numerosRomanos[50], end="") c -= 50 s = 0 while s s += 10 print(numerosRomanos[10], end="") if c == 90: print(numerosRomanos[c], end="") if e print(numerosRomanos[e]) if e > 5 and e e -= 5 print(numerosRomanos[5], numerosRomanos[e]) if e == 9: print(numerosRomanos[e]) if len(b) == 4: m = a o = a q = c e %= 10 c = o % 100 c //= 10 c = c * 10 q -= c ex = m % 1000 q %= 1000 q -= 5 if m > 999 and m m -= ex s = 0 while s s += 1000 print(numerosRomanos[1000], end="") if q > 99 and q print(numerosRomanos[q], end="") if q > 599 and q print(numerosRomanos[500], end="") s = 0 q -= 500 while s s += 100 print(numerosRomanos[100], end="") if q == 900: print(numerosRomanos[900]) if c > 9 and c s = 0 while s s += 10 print(numerosRomanos[10], end="") if c == 40: print(numerosRomanos[c], end="") if c == 50: print(numerosRomanos[c], end="") if c > 59 and c print(numerosRomanos[50], end="") c -= 50 s = 0 while s s += 10 print(numerosRomanos[10], end="") if c == 90: print(numerosRomanos[c], end="") if e print(numerosRomanos[e], end="") if e > 5 and e print(numerosRomanos[5], end="") e -= 5 print(numerosRomanos[e], end="") if a >= 4000: print("Lo sentimos no tenemos permitido mostrar mas numeros despued del 3999") except ValueError as VE: print("Ha sucedido un error en los valores", VE)
Es demacioda sinple haz algo mas dificil.
@End_lgo
8 ай бұрын
Pues graba tú тогда, блять😊
@LaGeekipediaDeErnesto
8 ай бұрын
¡Hola Héctor!, en el canal tengo una play list llamada clases en vivo donde resuelvo problemas de algoritmia. Ahí encontrarás ejercicios más avanzados donde podrás poner a prueba tus conocimientos intentado resolver los ejercicios propuestos en el lenguaje de programación Python.