CursosEmpresasBlogLiveConfPrecios

Practicando el tipado estático

Clase 6 de 21 • Curso Profesional de Python

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    ¿Qué necesitas saber para tomar el curso?

    ¿Qué necesitas saber para tomar el curso?

    03:15 min
  • 2
    ¿Cómo funciona Python?

    ¿Cómo funciona Python?

    07:49 min
  • 3
    Cómo organizar las carpetas de tus proyectos

    Cómo organizar las carpetas de tus proyectos

    07:15 min

Static Typing

  • 4
    ¿Qué son los tipados?

    ¿Qué son los tipados?

    10:26 min
  • 5
    Tipado estático en Python

    Tipado estático en Python

    14:26 min
  • 6
    Practicando el tipado estático

    Practicando el tipado estático

    Viendo ahora

Conceptos avanzados de funciones

  • 7
    Scope: alcance de las variables

    Scope: alcance de las variables

    06:32 min
  • 8
    Closures

    Closures

    08:21 min
  • 9
    Programando closures

    Programando closures

    07:00 min
  • 10
    Decoradores

    Decoradores

    06:19 min
  • 11
    Programando decoradores

    Programando decoradores

    13:05 min

Estructuras de datos avanzadas

  • 12
    Iteradores

    Iteradores

    13:52 min
  • 13
    La sucesión de Fibonacci

    La sucesión de Fibonacci

    14:01 min
  • 14
    Generadores

    Generadores

    07:22 min
  • 15
    Mejorando nuestra sucesión de Fibonacci

    Mejorando nuestra sucesión de Fibonacci

    06:53 min
  • 16
    Sets

    Sets

    10:58 min
  • 17
    Operaciones con sets

    Operaciones con sets

    06:09 min
  • 18
    Eliminando los repetidos de una lista

    Eliminando los repetidos de una lista

    05:20 min

Bonus

  • 19
    Manejo de fechas

    Manejo de fechas

    08:44 min
  • 20
    Time zones

    Time zones

    08:46 min

Conclusión

  • 21
    Completaste la trilogía. ¿Cómo seguir?

    Completaste la trilogía. ¿Cómo seguir?

    01:30 min
  • Tomar el examen del curso
    • Orazio Cappadonna Cantor

      Orazio Cappadonna Cantor

      student•
      hace 4 años

      Yo lo quise hacer de la manera mas profesional posible integrando pruebas unitarias para testear los metodos, y seria de la siguiente forma:

      Archivo palindrome.py:

      """Python module to know if a string is palindrome""" def is_palindrome(string: str) -> bool: """Returns if the string is palindrome (True or False)""" string = string.lower() string = string.replace(' ', '') return (string == string[::-1]) def run(): print(is_palindrome('Hola mundo!')) if __name__ == '__main__': run()

      Archivo prime_number:

      """Python module to know if a number is prime""" def is_prime(number: int) -> bool: """Returns True if number is prime or False if the number is not prime""" results_list = [x for x in range(2, number) if number % x == 0] return len(results_list) == 0 def run(): number: int = 73 number_is_prime: bool = is_prime(number) print(f'Is {number} a prime number? {number_is_prime}') if __name__ == '__main__': run()

      Y aqui el archivo test.py:

      """Testing the methods""" import unittest from unittest import TestCase from palindrome import is_palindrome from prime_number import is_prime class TestingFunctions(TestCase): """Tests to know if the methods works well""" def test_is_palindrome(self): """Testing is_palindrome method""" self.assertEqual(is_palindrome('Ligar es ser agil'), True) self.assertEqual(is_palindrome('Arepera'), True) self.assertEqual(is_palindrome('Esto no es un palindromo'), False) self.assertEqual(is_palindrome('ESto tampoco es un palindromo'), False) self.assertEqual(is_palindrome('Ana'), True) def test_is_prime(self): """Testing is_prime method""" self.assertEqual(is_prime(100), False) self.assertEqual(is_prime(200), False) self.assertEqual(is_prime(53), True) self.assertEqual(is_prime(23), True) self.assertEqual(is_prime(45), False) self.assertEqual(is_prime(32), False) self.assertEqual(is_prime(142), False) if __name__ == '__main__': unittest.main()

      Y por ultimo los resultados de los tests:

      .. ---------------------------------------------------------------------- Ran 2 tests in 0.001s OK
        Miguel Sanchez

        Miguel Sanchez

        student•
        hace 4 años

        Excelente aporte :0

        Sebastián Andrade

        Sebastián Andrade

        student•
        hace 4 años

        Genial!

      Ernesto Crespo

      Ernesto Crespo

      student•
      hace 4 años

      Una herramienta muy útil para validar código antes de subirlo a un repositorio git es pre-commit. Para usarlo con mypy pueden revisar artículo. Dejo un artículo con varias reglas de pre-commit para python enlace

        Jose Manuel Acevo Garcia

        Jose Manuel Acevo Garcia

        student•
        hace 4 años

        Muchisimas gracias por la info....1saludo

        Bryan Estiven Silva Mercado

        Bryan Estiven Silva Mercado

        student•
        hace 4 años

        Excelente articulo, voy a utilizarlo para refactorizar un viejo proyecto que tengo en python

      Carlos José Tun Pinzón

      Carlos José Tun Pinzón

      student•
      hace 4 años

      Modulo mypy

      El modulo mypy se complementa con el modulo typing ya que permitirá mostrar los errores de tipado débil en Python.

      Para revisar si algún archivo contiene errores de tipado ejecutamos en la línea de comandos lo siguiente:

      mypy archivo.py --check-untyped-defs

      Como resultado nos mostrará si existe algún error de compatibilidad de tipos.

        Luis Alejandro Vera Hernandez

        Luis Alejandro Vera Hernandez

        student•
        hace 4 años

        Gracias por el resumen

      Emmanuel Corral Marco

      Emmanuel Corral Marco

      student•
      hace 4 años

      Practice the static type

      • Following the tips of intermediate python course, from terminal:
      1. mkdir new_folder
      2. git init
      3. py -m venv venv
      4. touch .gitignore type in .gitignore file
      # Ignore the enviroment files when you push to github. venv
      1. avenv (alias to activate venv: .\venv\Scripts\activate)
      2. pip install mypy
      3. pip list (to check mypy)
      4. touch palindrome-py
      5. code palindrome-py
      6. Make your code!!!!
      7. mypy palindrome-py --check-untyped-defs
        Omar Rodríguez Aldama

        Omar Rodríguez Aldama

        student•
        hace 4 años

        muy buen resumen de la clase

        Luis Alejandro Vera Hernandez

        Luis Alejandro Vera Hernandez

        student•
        hace 4 años

        Esto me va a servir llevarme hasta acostumbrarme a los comandos

      Jonathan Alemán

      Jonathan Alemán

      student•
      hace 4 años

      Mi aporte en código :D . ¡Hola a todos! De esta forma realice el reto. SI tienen alguna sugerencia es más que bienvenida :) (

      prime_number_TipadoEstatico.png
      Espero les sirva ¡Nunca paren de aprender!

        Miguel Rodríguez

        Miguel Rodríguez

        student•
        hace 4 años

        Genial, aunque creo que sale sobrando la parte de -> bool , ya que al final no retornas un valor booleano.

        Jonathan Alemán

        Jonathan Alemán

        student•
        hace 4 años

        @AlexRods Tienes razón. Lo había intentado con otra forma en dónde si lo ocupaba, pero al final me decidí por esta, ya que a mi parecer me fue más fácil y corta. Agradezco tu observación

      Carlos Rodríguez

      Carlos Rodríguez

      student•
      hace 4 años

      Recomiendo mucho el linter de python pylint es super exigente en la escritura de código, te ayuda escribir código de calidad:a

      pip install pylint

      Luego generan el archivo de configuración de pylint si quieren omitir algunas reglas o modificarlas:

      pylint --generate-rcfile > .pylintrc

      Luego no se les olvide que una vez teniendo todos los módulos instalados deben generar sus requirements.txt.

      pip freeze > requirement.txt
        Eduard Giraldo Martínez

        Eduard Giraldo Martínez

        student•
        hace 4 años

        Ohh interesante, lo intentaré 🚀

        Luis Valencia

        Luis Valencia

        student•
        hace 3 años

        Excelente recomendacion

      Henry Daniel

      Henry Daniel

      student•
      hace 4 años

      Reto 1

      def is_primo(num:int)->bool: result=[i for i in range(1,num+1) if num%i==0] return len(result)==2 def run(): print(is_primo(13)) if __name__=='__main__': run()
        Juan David Diaz Ramos

        Juan David Diaz Ramos

        student•
        hace 4 años

        Debes evaluar cuando ingresas el número 1 ya que este no es primo. Saludos.

        Edú Pilares Quispe

        Edú Pilares Quispe

        student•
        hace 4 años

        Si ingresa el número 1 el len no le daría 2 así que el código está perfecto

      Heberto Nicolás Hernández Andrade

      Heberto Nicolás Hernández Andrade

      student•
      hace 4 años

      Para preparar nuestro entorno de trabajo se siguió el siguiente procedimiento:

      • Se crea una carpeta para el desarrollo del proyecto.
      • Se inicializó un repositorio de git con "git init".
      • Se creó un ambiente virtual con "python3 -m venv venv".
      • Se creó un archivo .gitignore con "touch .gitignore".
      • Dentro del archivo .gitignore se coloca la carpeta venv mediante la siguiente línea código: "venv/"
      • Se activó el ambiente virtual con ".\venv\Scripts\activate".
      • Se instaló mypy mediante "pip install mypy".
      • Se creó el archivo palindrome. py.
      Víctor Isaac Arias García

      Víctor Isaac Arias García

      student•
      hace 4 años

      Para los que estamos utilizando WSL2 y nos dio problemas inicializar el entorno virtual aca dejo el comando

      . venv/bin/activate
        GABRIEL OMAR TARAPUES RODRIGUEZ

        GABRIEL OMAR TARAPUES RODRIGUEZ

        student•
        hace 4 años

        Que error te dio?

        Gonzalo Israel Pinto Salazar

        Gonzalo Israel Pinto Salazar

        student•
        hace 3 años

        Genio gracias... gracias...

      David Silva Apango

      David Silva Apango

      student•
      hace 4 años

      Este es mi aporte, traté de usar la menor cantidad de líneas de código considerando lo siguiente:

      • Como no se necesita dividir entre el número 1 y el mismo que estamos trabajando, NO los incluyo dentro del rango.
      • En caso de que el número sea 1 NO entra en el ciclo for y se declara de inmediato que no es primo.
      • En caso de que se encuentre un sólo módulo igual a cero salimos del ciclo inmediatamente, ya que no es necesario seguir buscando (con un contraejemplo basta).
      def prime_number(number: int) -> bool: for i in range(2,number): if number % i == 0: return False return True return False def run(): n: int = int(input('Escribe un número')) if prime_number(n): print("Es primo") else: print("No es primo") if __name__ == '__main__': run()
        Fernanda Arteaga Guivin

        Fernanda Arteaga Guivin

        student•
        hace 4 años

        bueniisimo bastante concreto!

      Roberto Francisco Quijano Vicente

      Roberto Francisco Quijano Vicente

      student•
      hace 4 años

      Solución del reto con el teorema de Wilson:

      def isPrime(number: int) -> bool: """ Function that applyes the Wilson's Theorem to determine if a number is prime. """ factorial = number -1 for i in range(2, number-1): factorial *= i return (factorial + 1) % number == 0 def run(): print(isPrime(18)) if __name__ == '__main__': run()
      Gabriel Missael Barco

      Gabriel Missael Barco

      student•
      hace 4 años

      Practicando el tipado estático

      • Para checar que el código respeta el tipado que especificamos, debemos correrlo con mypy <nombre>.py --check-untyped-defs 👀. El módulo mypy nos arroja errores de tipado, por ejemplo:

        palindrome.py:9: error: Argument 1 to "is_palindrome" has incompatible type "int"; expected "str" Found 1 error in 1 file (checked 1 source file)
      • Solución al reto:

        def is_prime(number: int) -> bool: for i in range(2, number): if number % i == 0: return False return True def main(): # print(is_prime('Hola')) print(is_prime(5)) if __name__=='__main__': main()
        fidel angel ochoa

        fidel angel ochoa

        student•
        hace 4 años

        excelente, como se podria hacer con un list comprenhension?

      David Rosas

      David Rosas

      student•
      hace 4 años

      Me marco bien el error de tipado con un str y hasta metiendole float. Pero si a la funcion le meto un bool, ya sea True o False, me dice que todo esta bien:

      Success: no issues found in 1 source file

      Por que sucede esto?

        Liliana Molina Camacho

        Liliana Molina Camacho

        student•
        hace 4 años

        Me pasó lo mismo, luego revisando la función, vi que tenía un espacio entre : y str, se lo quité y con eso si me marcó el error.

        Bruno Nicolás Barajas Correa

        Bruno Nicolás Barajas Correa

        student•
        hace 3 años

        Creo que nos marca lo de Succes cuando realmente se compilo el código y no encontró ningún problema. Lo veo como bandera verde cuando nos sale eso, para después ejecutarlo de forma normal.

      Lino Tomás Vazquez Ponce

      Lino Tomás Vazquez Ponce

      student•
      hace 4 años

      ahora que lo pienso no se si debí importar typing pero bueno...acá está

      from typing import * def is_prime(num: int)-> bool: if num == 2: return True elif num == 1 or num % 2 == 0: return False else: return True if __name__ == "__main__": print(is_prime(4))
        fidel angel ochoa

        fidel angel ochoa

        student•
        hace 4 años

        muchas gracias, me parecio super simple el codigo, te comparto lo que le agregue leyendo a otros compañeros.

        def is_prime(num: int) -> bool: if num == 2: return True elif num == 1 or [i for i in range(2, num // 2) if num % i == 0]: return False else: return True if __name__ == "__main__": number = int(input('Write a number to guess if is prime: ')) print(f'Is {number} a prime number?') print(is_prime(number))```
      Diego Andrés Rojas González

      Diego Andrés Rojas González

      student•
      hace 4 años

      Si estas usando powershell y no puedes activar el entorno virtual prueba con esto:

      1. Abre powershell en modo administrador
      2. ejecuta el siguiente comando
      Set-ExecutionPolicy Unrestricted -Force

      Puedes encontrar mas información en https://docs.microsoft.com/en-us/powershell/...

      André Thomas Gil Cifuentes

      André Thomas Gil Cifuentes

      student•
      hace 4 años

      Esta es mi solucion al reto, tambien puse a prueba mi creatividad para hacer el codigo lo mas efectivo posible y consegui un time complexity de O(sqrt(n))

      from math import sqrt def is_prime(n: int) -> bool: if n == 0 or n == 1: return False if n == 2 or n == 3: return True if n % 2 == 0 or n % 3 == 0: return False # Revisamos si el numero esta compuesto por # un numero primo diferente de 2 y 3. for i in range(5, int(sqrt(n)) + 1): if n % i == 0 or n % (i + 2) == 0: return False return True def main(): if is_prime(4): print("El numero es primo") else: print("El numero NO es primo") if __name__ == '__main__': main()
        Jhon Edward Bedoya

        Jhon Edward Bedoya

        student•
        hace 4 años

        🟢 @ AndrE_ Well done, but the code is a bit complex still. Try to make it more friendly and easy to read. 🦾

      Kevin Tovar

      Kevin Tovar

      student•
      hace 4 años
      def is_prime(number: int) -> bool: n = 0 for num in range(1, number + 1): if number % num == 0: n += 1 return n == 2 def run(): print(is_prime(5)) if __name__ == '__main__': run()
        Joseph Lázaro Ricardo

        Joseph Lázaro Ricardo

        student•
        hace 4 años

        Lo hice como tú, sencillito para no confundir a la banda.

      Sergio Garnica

      Sergio Garnica

      student•
      hace 4 años

      Una herramienta muy útil para revisar posibles errores en Python, como por ejemplo el tipo de datos, es utilizar Unit Testing.

      Estos dos videos lo explican muy bien: https://www.youtube.com/watch?v=1Lfv5tUGsn8 https://www.youtube.com/watch?v=6tNS--WetLI

      Nelson Porfirio Sanchez Cedron

      Nelson Porfirio Sanchez Cedron

      student•
      hace 4 años

      Aquí les dejo mi código del reto de la clase. Estoy usando el Teorema de Wilson para la prueba de primalidad.

      def is_prime(number: int) -> bool: factorial = 1 if number == 0: return false for i in range(1, number): factorial = factorial * i factorial += 1 if factorial % number == 0 and number > 1: return True else: return False
      Javier Pajarito Caicedo

      Javier Pajarito Caicedo

      student•
      hace 4 años

      ¿Qué diferencia hay entre escribir la sintaxis para tipado estático y poner un int() cuando pedimos el dato como se ve en la imagen?

      estatico.png
        Andrés Felipe Martínez Salazar

        Andrés Felipe Martínez Salazar

        student•
        hace 4 años

        El int("598") es en realidad un cast, esto convierte el string a un int en tiempo de ejecución, en cambio la sintaxis de tipado estático es mas una guía para los desarrolladores pero no afecta en tiempo de ejecucion, te das cuenta si haces algo tal que asi:

        numero : int = "598" print(type(numero))

        veras que imprime <class 'str'> porque aunque le digas que es un entero en realidad en tiempo de ejecucion le estas asignando un string.

        Santiago Ramos Morales

        Santiago Ramos Morales

        student•
        hace 4 años

        Estás casteando de un tipo a otro, está bien pero vas a tener un código muy tedioso de leer, créeme, donde trabajé tenían algo así en el software de timbrado de documentos fiscales y era un dolor de cabeza.

    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