CursosEmpresasBlogLiveConfPrecios

Poniendo a prueba el manejo de excepciones

Clase 16 de 21 • Curso de Python Intermedio: Comprehensions, Lambdas y Manejo de Errores

Clase anteriorSiguiente clase

Contenido del curso

Preparación antes de empezar

  • 1
    Algunas cosas que aprenderás sobre Python en este curso

    Algunas cosas que aprenderás sobre Python en este curso

    01:36 min
  • 2
    El Zen de Python

    El Zen de Python

    08:30 min
  • 3
    ¿Qué es la documentación?

    ¿Qué es la documentación?

    04:33 min

Entorno virtual

  • 4
    ¿Qué es un entorno virtual?

    ¿Qué es un entorno virtual?

    03:56 min
  • 5
    El primer paso profesional: creación de un entorno virtual

    El primer paso profesional: creación de un entorno virtual

    08:30 min
  • 6
    Instalación de dependencias con pip

    Instalación de dependencias con pip

    09:53 min
  • quiz Entorno virtual

Alternativa a los ciclos: comprehensions

  • 7
    Listas y diccionarios anidados

    Listas y diccionarios anidados

    12:32 min
  • 8
    List comprehensions

    List comprehensions

    07:39 min
  • 9
    Dictionary comprehensions

    Dictionary comprehensions

    06:00 min
  • quiz Alternativa a los ciclos: comprehensions

Conceptos avanzados de funciones

  • 10
    Funciones anónimas: lambda

    Funciones anónimas: lambda

    05:42 min
  • 11
    High order functions: filter, map y reduce

    High order functions: filter, map y reduce

    10:40 min
  • 12
    Proyecto: filtrando datos

    Proyecto: filtrando datos

    14:35 min
  • quiz Conceptos avanzados de funciones

Manejo de errores

  • 13
    Los errores en el código

    Los errores en el código

    08:54 min
  • 14
    Debugging

    Debugging

    12:27 min
  • 15
    Manejo de excepciones

    Manejo de excepciones

    10:53 min
  • 16
    Poniendo a prueba el manejo de excepciones

    Poniendo a prueba el manejo de excepciones

    Viendo ahora
  • 17
    Assert statements

    Assert statements

    07:55 min
  • quiz Manejo de errores

Manejo de archivos

  • 18
    ¿Cómo trabajar con archivos?

    ¿Cómo trabajar con archivos?

    06:52 min
  • 19
    Trabajando con archivos de texto en Python

    Trabajando con archivos de texto en Python

    12:27 min
  • quiz Manejo de archivos

Conclusión

  • 20
    Reto final: Juego del Ahorcado o Hangman Game

    Reto final: Juego del Ahorcado o Hangman Game

    03:43 min
  • 21
    Continúa tu camino profesional con Python

    Continúa tu camino profesional con Python

    02:17 min
  • Tomar el examen del curso
    • Julian Camilo Hermida Delgado

      Julian Camilo Hermida Delgado

      student•
      hace 5 años

      Solución al reto (le añadí un bucle while para que el programa se ejecute indefinidamente, hasta que el usuario ingrese un valor válido):

      def divisors(num): divisors = [] for i in range(1, num + 1): if num % i == 0: divisors.append(i) return divisors def run(): while True: try: num = int(input('Ingresa un número: ')) if num < 0: raise ValueError print(divisors(num)) print("Terminó mi programa") break except ValueError: print("Debes ingresar un entero positivo") if __name__ == '__main__': run()
        Luis Arturo Cruz Cruz

        Luis Arturo Cruz Cruz

        student•
        hace 5 años

        El viejo ciclo 1-x...

        tenor.png

        Hice un tutorial de scripting sobre eso:

        https://platzi.com/tutoriales/1468-bash-shell/10524-el-uso-de-do-while-para-un-menu-sencillo/

        Lucas Sanchez

        Lucas Sanchez

        student•
        hace 5 años

        Buen aporte. Le agregaría a la condicional IF lo siguiente:

        if num < 0 or num == 0:

        Para verificar que no haya escrito un numero 0.

      Ana Guzmán

      Ana Guzmán

      student•
      hace 5 años
      <def divisor(num): try: if num < 0: raise ValueError("ingresa un número positvo") divisors =[i for i in range(1, num + 1) if num % i == 0] return divisors except ValueError as ve: print(ve) return False def run(): try: num = int(input(f'Ingresa un número: ')) print(divisor(num)) print("termino mi programa") except ValueError: print("ingresa un número") if __name__ =='__main__': run()>
        Juan Sebastian Mesa

        Juan Sebastian Mesa

        student•
        hace 5 años

        Me gustó tu implementación porque mantuviste las dos excepciones.

        Moisés Manuel Morín Hevia

        Moisés Manuel Morín Hevia

        student•
        hace 5 años

        Muy limpio & fácil de leer. Eres la mejor !

      Royer Guerrero Pinilla

      Royer Guerrero Pinilla

      student•
      hace 5 años

      Solución reto

      try: num = int(input('Enter a number: ')) if num < 0: raise Exception('Negative number is not valid') print(divisors(num)) print('[!] Finish...') except ValueError: print('[!] Solo puedes añadir numeeros') except Exception: print('[!] El numero no puede ser negativo')
        Manuel Espitia

        Manuel Espitia

        student•
        hace 5 años

        Me dio '''NameError: name 'exception' is not defined'''

        Royer Guerrero Pinilla

        Royer Guerrero Pinilla

        student•
        hace 5 años

        Maybe es tu version de python

      Usuario anónimo

      Usuario anónimo

      user•
      hace 5 años

      👾 Mejorando el control de las excepciones de nuestro proyecto.

      def divisors(num): try: if num < 0: raise ValueError('Ingresa solo números positivos') else: divisors = [i for i in range(1, num + 1) if num % i == 0] return divisors except ValueError as value_error: print(value_error) return str(num) + " No es nu numero positivo" def run(): try: num = int(input("Ingresa un número: ")) print(divisors(num)) print("Terminó mi programa") except ValueError: print("Debes ingresar un número") if __name__ == "__main__": run()
      Erik Alejandro Garcia Duarte

      Erik Alejandro Garcia Duarte

      student•
      hace 5 años
      def run(): divisors = lambda num: [x for x in range(1, num + 1) if num % x == 0] try: num = int(input('Ingresa un numero: ')) if num < 0: raise ValueError('Solo ingresa numeros positivos') print(divisors(num)) print("Termino") except ValueError: print('Solo Ingrese Numeros Positivos :|') if __name__ == '__main__': run()
        David Eduardo Bueno Núñez

        David Eduardo Bueno Núñez

        student•
        hace 5 años

        Gran uso de list comprehension y lambda

        Manuel Espitia

        Manuel Espitia

        student•
        hace 5 años

        Excelente, este sí me dio! Gracias por compartirlo.

      Juan Ignacio Arcidiacono

      Juan Ignacio Arcidiacono

      student•
      hace 5 años
      def divisors(num): divisors = [] try: if num > 0: for i in range(1,num + 1): if num % i == 0: divisors.append(i) return divisors if num < 0: raise ValueError ('No se puede ingresar numeros negativos') except ValueError as ve: print(ve) return False def main(): try: num = int(input('Ingresar numero: ')) print(divisors(num )) except ValueError: print('No es un numero') if __name__ == "__main__": main()
        LEANDRO DARIO MAMANI

        LEANDRO DARIO MAMANI

        student•
        hace 5 años

        justo buscaba algo que combinara los 2 casos, gracias!!

        Max Baldiviezo

        Max Baldiviezo

        student•
        hace 4 años

        gracias

      Oscar Mayorga Aparicio

      Oscar Mayorga Aparicio

      student•
      hace 5 años

      Solucion al reto, dejando tambien la validacion del ingreso solo de numeros:

      def run(): try: num = int(input("INGRESA NUMERO")) try: if num <0: raise ValueError("No se puede ingresar numeros negativos") print(divisors(num)) except ValueError as ve: print(ve) except ValueError: print("DEBES INGRESAR UN NUMERO")
        Osvaldo Olguín

        Osvaldo Olguín

        student•
        hace 4 años

        Try anidados, interesante

        David Carrillo Castillo

        David Carrillo Castillo

        student•
        hace 3 años

        Excelente amigo, estuve intentandolo de la misma manera

      Jonathan Emmanuel Pumares Chab

      Jonathan Emmanuel Pumares Chab

      student•
      hace 4 años

      En ocasiones nuestro código tendrá la posibilidad de que salte más de un tipo de excepción, y por lo tanto podemos emplear más de un except dentro de un try.

      def dividir(numero): return 1 / numero def run(): try: numero = int(input('Escribe un numero: ')) print(divisor(numero)) except ValueError: print('Solamente se aceptan numeros') except ZeroDivisionError: print('No se puede dividir entre 0') except: print('Se encontro un error') if __name__ == '__main__': run()

      Si el try lanza cualquier otra tipo de excepción no manejada, será manejada por el último except.

      Pascal Salvador Miranda Valdés

      Pascal Salvador Miranda Valdés

      student•
      hace 4 años

      Mi reto

      debugging-sample-carbon.png

      Explicacion

      El codigo esta dentro de un bucle while eterno que hace al programa pedir un numero como entrada hasta recibir el valor esperado. Usando condicionales y manejo de errores, el programa al recibir una entrada invalida salta a la siguiente iteracion con continue, reseteando todo el proceso y volviendo a pedir una nueva entrada. Una vez recibida la entrada valida, el programa finaliza.

      Christian Ricardo Conchari Cabrera

      Christian Ricardo Conchari Cabrera

      student•
      hace 5 años
      def divisors(num): return [i for i in range (1,num+1) if num%i == 0] def run(): try: num = int(input("Ingrese un número: ")) if num < 0: raise Exception("Ingrese un número positivo.") print(divisors(num)) print("Termino el programa") except ValueError: print("Debes ingresar un número.") except Exception: print("Debes ingresar un número positivo.") if __name__=='__main__': run()
        Moisés Manuel Morín Hevia

        Moisés Manuel Morín Hevia

        student•
        hace 5 años

        Buen aporte !

      Piero Alejandro Cahuano Vera

      Piero Alejandro Cahuano Vera

      student•
      hace 4 años

      Vi que el profe tomo un fragmento de código y le hizo una indentación a la derecha, ¿alguien sabe el comando con el qué hizo eso?

        José Aguilar

        José Aguilar

        student•
        hace 4 años

        Hola, para tabular varias líneas en VSC es Ctrl + ¿
        Para quitar tabulación Ctrl + ?

        Fer Torres

        Fer Torres

        student•
        hace 4 años

        Seleccionas todo el fragmento deseado de código y presionas TAB

      Víctor Manuel Rosenstiehl Colón

      Víctor Manuel Rosenstiehl Colón

      student•
      hace 4 años

      Saludos, en algunos lenguajes, el abuso de try, puede generar degradación del rendimiento del programa, por lo que se recomienda hacer programación defensiva, por ej, evaluar si un objeto está instanciado o si los parámetros de entrada son válidos y lanzar la exepción hacia arriba, para hacer un único control en la capa superior, donde se hacer el respectivo logeo y manejo del error; esto es válido también para python? o es lícito hacer un control de flujo con try impunemente?

        Víctor Manuel Rosenstiehl Colón

        Víctor Manuel Rosenstiehl Colón

        student•
        hace 4 años

        La respuesta es assert, en la siguiente clase :)

      Julián Andrés Rodas Laverde

      Julián Andrés Rodas Laverde

      student•
      hace 5 años

      Para manejar los dos mensajes de error, y como el error del ingreso de cadenas levanta es un ValueError, utilice el NameError, para con el reise levantar el otro error, y mostar el mensaje correcto según sea el caso, así:

      def my_divisor(a): divisor = [] for i in range(1,a+1): if a % i == 0: divisor.append(i) return divisor def run(): try: num = int(input('Ingrese un Número =')) if num < 0: raise NameError('Los datos solo deben ser números enteros ') print(my_divisor(num)) print("Gracias por utilizar nuestro Sistema") except NameError as ne: print(ne) except ValueError: print('Deben ser datos numéricos') if __name__ == '__main__': run()
        Alexander Ivan Campos

        Alexander Ivan Campos

        student•
        hace 5 años

        Buen código compañero solo para tener en cuenta: Las excepciones vienen en diferentes tipos, y el tipo se imprime como parte del mensaje: los tipos en el ejemplo son ZeroDivisionError, NameError and TypeError.

        Julián Andrés Rodas Laverde

        Julián Andrés Rodas Laverde

        student•
        hace 5 años

        Muchas Gracias por tu comentario, Lo tendre en cuenta.

      Dan Yael Sajarópulos Verdugo

      Dan Yael Sajarópulos Verdugo

      student•
      hace 4 años

      Para el reto creé una excepción específica en caso de que el usuario ingrese un número negativo:

      class ValueIsNegative(Exception): pass def divisors(num): divisors = [] for i in range(1, num+1): if num % i == 0: divisors.append(i) return divisors def run(): try: num = int(input("Ingresa un número: ")) if num < 0: raise ValueIsNegative print(divisors(num)) except ValueError: print("Debes ingresar un número") except ValueIsNegative: print("Debes ingresar un número positivo") if __name__ == "__main__": run()
      Carlos S. Aldazosa

      Carlos S. Aldazosa

      student•
      hace 5 años

      Cuál es el método correcto para volver a pedir el imput del usuario en caso que su input sea incorrecto? Usar recursión llamando a la función que pide el input o con un ciclo while?

        Andres muñoz

        Andres muñoz

        student•
        hace 5 años

        con un ciclo

        while True: el codigo aqui
        Arturo Juárez Sánchez

        Arturo Juárez Sánchez

        student•
        hace 5 años

        puedes manejar excepciones.

      Juan Alfonso

      Juan Alfonso

      student•
      hace 4 años

      Modifiqué el archivo original y ahora es un proceso para traducir un decimal a binario y a este le añadí las excepciones de type y value para los valores o tipo de vlaor no validos en cada proceso.

      # -*- coding: utf-8 -*- def binary(num): try: if num <= 0: raise ValueError("El número debe ser positivo o mayor a cero") binary = [] divisor = num while divisor > 0: binary.append(divisor % 2) divisor = int(divisor / 2) return binary except ValueError as ve: print(ve) def run(): try: num = int(input('Ingresa un numero: ')) str_bin = ''.join([str(b) for b in binary(num)])[::-1] print('El numero {} en binario es: {}'.format(num, str_bin)) except ValueError: print("Debes añadir un número") except TypeError: print("El valor añadido no tiene un formato valido") if __name__ == '__main__': run()
      Jose Cardenas

      Jose Cardenas

      student•
      hace 5 años

      Para cortar el ciclo While

      return False

      al final del try . Osea antes del except

      Para que no se haga infinito su ciclo.

      Alex Guaman

      Alex Guaman

      student•
      hace 4 años

      Reto:

      def divisor(num): divisors = [] if num < 0: raise ValueError('Debes ingresar un numeo positivo') for i in range(1, num + 1): if num % i == 0: divisors.append(i) return divisors def run(): try: num = int(input('Ingresa un numero: ')) try: print(divisor(num)) except ValueError as e: print(e) except ValueError: print('Debes ingresar un numero') if __name__ == '__main__': run()
      Mauricio Gonzalo Aliendre Pérez

      Mauricio Gonzalo Aliendre Pérez

      student•
      hace 4 años

      Solución al reto El bucle me permite no salir del programa hasta que ingrese un numero entero positivo

      def divisors(num): try: if num < 0: raise ValueError("Debes ingresar un numero positivo") if num == 0: raise ValueError("Debes ingresar un numero que no sea 0") divisors = [i for i in range(1, num+1) if num % i == 0] return divisors except ValueError as ve: print(ve) run() def run(): while True: try: num = int(input("Ingresa un numero: ")) print(divisors(num)) print("Termino mi programa") break except ValueError: print("Escribe un numero entero por favor") if __name__ == '__main__': run()
      Edgar Javier López Flores

      Edgar Javier López Flores

      student•
      hace 4 años

      Esta es mi solución al reto, añadí un bucle while para que se ejecutara hasta que el usuario ingresara un valor valido

      def divisors(num): try: if num < 0 or num == 0: raise ValueError("Ingresa un número positivo ó mayor que cero") divisors = [i for i in range(1, num + 1) if num % i == 0] return divisors except ValueError as ve: print(ve) run() def run(): while True: try: num = int(input("Ingresa un número: ")) print(divisors(num)) print("Termino mi programa") break except ValueError: print("Debes ingresar un número") if __name__ == '__main__': run()

    Escuelas

    • Desarrollo Web
      • Fundamentos del Desarrollo Web Profesional
      • Diseño y Desarrollo Frontend
      • Desarrollo Frontend con JavaScript
      • Desarrollo Frontend con Vue.js
      • Desarrollo Frontend con Angular
      • Desarrollo Frontend con React.js
      • Desarrollo Backend con Node.js
      • Desarrollo Backend con Python
      • Desarrollo Backend con Java
      • Desarrollo Backend con PHP
      • Desarrollo Backend con Ruby
      • Bases de Datos para Web
      • Seguridad Web & API
      • Testing Automatizado y QA para Web
      • Arquitecturas Web Modernas y Escalabilidad
      • DevOps y Cloud para Desarrolladores Web
    • English Academy
      • Inglés Básico A1
      • Inglés Básico A2
      • Inglés Intermedio B1
      • Inglés Intermedio Alto B2
      • Inglés Avanzado C1
      • Inglés para Propósitos Específicos
      • Inglés de Negocios
    • Marketing Digital
      • Fundamentos de Marketing Digital
      • Marketing de Contenidos y Redacción Persuasiva
      • SEO y Posicionamiento Web
      • Social Media Marketing y Community Management
      • Publicidad Digital y Paid Media
      • Analítica Digital y Optimización (CRO)
      • Estrategia de Marketing y Growth
      • Marketing de Marca y Comunicación Estratégica
      • Marketing para E-commerce
      • Marketing B2B
      • Inteligencia Artificial Aplicada al Marketing
      • Automatización del Marketing
      • Marca Personal y Marketing Freelance
      • Ventas y Experiencia del Cliente
      • Creación de Contenido para Redes Sociales
    • Inteligencia Artificial y Data Science
      • Fundamentos de Data Science y AI
      • Análisis y Visualización de Datos
      • Machine Learning y Deep Learning
      • Data Engineer
      • Inteligencia Artificial para la Productividad
      • Desarrollo de Aplicaciones con IA
      • AI Software Engineer
    • Ciberseguridad
      • Fundamentos de Ciberseguridad
      • Hacking Ético y Pentesting (Red Team)
      • Análisis de Malware e Ingeniería Forense
      • Seguridad Defensiva y Cumplimiento (Blue Team)
      • Ciberseguridad Estratégica
    • Liderazgo y Habilidades Blandas
      • Fundamentos de Habilidades Profesionales
      • Liderazgo y Gestión de Equipos
      • Comunicación Avanzada y Oratoria
      • Negociación y Resolución de Conflictos
      • Inteligencia Emocional y Autogestión
      • Productividad y Herramientas Digitales
      • Gestión de Proyectos y Metodologías Ágiles
      • Desarrollo de Carrera y Marca Personal
      • Diversidad, Inclusión y Entorno Laboral Saludable
      • Filosofía y Estrategia para Líderes
    • Diseño de Producto y UX
      • Fundamentos de Diseño UX/UI
      • Investigación de Usuarios (UX Research)
      • Arquitectura de Información y Usabilidad
      • Diseño de Interfaces y Prototipado (UI Design)
      • Sistemas de Diseño y DesignOps
      • Redacción UX (UX Writing)
      • Creatividad e Innovación en Diseño
      • Diseño Accesible e Inclusivo
      • Diseño Asistido por Inteligencia Artificial
      • Gestión de Producto y Liderazgo en Diseño
      • Diseño de Interacciones Emergentes (VUI/VR)
      • Desarrollo Web para Diseñadores
      • Diseño y Prototipado No-Code
    • Contenido Audiovisual
      • Fundamentos de Producción Audiovisual
      • Producción de Video para Plataformas Digitales
      • Producción de Audio y Podcast
      • Fotografía y Diseño Gráfico para Contenido Digital
      • Motion Graphics y Animación
      • Contenido Interactivo y Realidad Aumentada
      • Estrategia, Marketing y Monetización de Contenidos
    • Desarrollo Móvil
      • Fundamentos de Desarrollo Móvil
      • Desarrollo Nativo Android con Kotlin
      • Desarrollo Nativo iOS con Swift
      • Desarrollo Multiplataforma con React Native
      • Desarrollo Multiplataforma con Flutter
      • Arquitectura y Patrones de Diseño Móvil
      • Integración de APIs y Persistencia Móvil
      • Testing y Despliegue en Móvil
      • Diseño UX/UI para Móviles
    • Diseño Gráfico y Arte Digital
      • Fundamentos del Diseño Gráfico y Digital
      • Diseño de Identidad Visual y Branding
      • Ilustración Digital y Arte Conceptual
      • Diseño Editorial y de Empaques
      • Motion Graphics y Animación 3D
      • Diseño Gráfico Asistido por Inteligencia Artificial
      • Creatividad e Innovación en Diseño
    • Programación
      • Fundamentos de Programación e Ingeniería de Software
      • Herramientas de IA para el trabajo
      • Matemáticas para Programación
      • Programación con Python
      • Programación con JavaScript
      • Programación con TypeScript
      • Programación Orientada a Objetos con Java
      • Desarrollo con C# y .NET
      • Programación con PHP
      • Programación con Go y Rust
      • Programación Móvil con Swift y Kotlin
      • Programación con C y C++
      • Administración Básica de Servidores Linux
    • Negocios
      • Fundamentos de Negocios y Emprendimiento
      • Estrategia y Crecimiento Empresarial
      • Finanzas Personales y Corporativas
      • Inversión en Mercados Financieros
      • Ventas, CRM y Experiencia del Cliente
      • Operaciones, Logística y E-commerce
      • Gestión de Proyectos y Metodologías Ágiles
      • Aspectos Legales y Cumplimiento
      • Habilidades Directivas y Crecimiento Profesional
      • Diversidad e Inclusión en el Entorno Laboral
      • Herramientas Digitales y Automatización para Negocios
    • Blockchain y Web3
      • Fundamentos de Blockchain y Web3
      • Desarrollo de Smart Contracts y dApps
      • Finanzas Descentralizadas (DeFi)
      • NFTs y Economía de Creadores
      • Seguridad Blockchain
      • Ecosistemas Blockchain Alternativos (No-EVM)
      • Producto, Marketing y Legal en Web3
    • Recursos Humanos
      • Fundamentos y Cultura Organizacional en RRHH
      • Atracción y Selección de Talento
      • Cultura y Employee Experience
      • Gestión y Desarrollo de Talento
      • Desarrollo y Evaluación de Liderazgo
      • Diversidad, Equidad e Inclusión
      • AI y Automatización en Recursos Humanos
      • Tecnología y Automatización en RRHH
    • Finanzas e Inversiones
      • Fundamentos de Finanzas Personales y Corporativas
      • Análisis y Valoración Financiera
      • Inversión y Mercados de Capitales
      • Finanzas Descentralizadas (DeFi) y Criptoactivos
      • Finanzas y Estrategia para Startups
      • Inteligencia Artificial Aplicada a Finanzas
      • Domina Excel
      • Financial Analyst
      • Conseguir trabajo en Finanzas e Inversiones
    • Startups
      • Fundamentos y Validación de Ideas
      • Estrategia de Negocio y Product-Market Fit
      • Desarrollo de Producto y Operaciones Lean
      • Finanzas, Legal y Fundraising
      • Marketing, Ventas y Growth para Startups
      • Cultura, Talento y Liderazgo
      • Finanzas y Operaciones en Ecommerce
      • Startups Web3 y Blockchain
      • Startups con Impacto Social
      • Expansión y Ecosistema Startup
    • Cloud Computing y DevOps
      • Fundamentos de Cloud y DevOps
      • Administración de Servidores Linux
      • Contenerización y Orquestación
      • Infraestructura como Código (IaC) y CI/CD
      • Amazon Web Services
      • Microsoft Azure
      • Serverless y Observabilidad
      • Certificaciones Cloud (Preparación)
      • Plataforma Cloud GCP

    Platzi y comunidad

    • Platzi Business
    • Live Classes
    • Lanzamientos
    • Executive Program
    • Trabaja con nosotros
    • Podcast

    Recursos

    • Manual de Marca

    Soporte

    • Preguntas Frecuentes
    • Contáctanos

    Legal

    • Términos y Condiciones
    • Privacidad
    • Tyc promociones
    Reconocimientos
    Reconocimientos
    Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
    Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
    Logo reconocimientoPrimera Startup EdTech · 2018
    Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
    Logo reconocimientoCEO Mejor Emprendedor del año · 2024
    De LATAM conpara el mundo
    YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads