CursosEmpresasBlogLiveConfPrecios

La sucesión de Fibonacci

Clase 13 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
  • 2
    ¿Cómo funciona Python?

    ¿Cómo funciona Python?

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

    Cómo organizar las carpetas de tus proyectos

    07:15
Static Typing
  • 4
    ¿Qué son los tipados?

    ¿Qué son los tipados?

    10:26
  • 5
    Tipado estático en Python

    Tipado estático en Python

    14:26
  • 6
    Practicando el tipado estático

    Practicando el tipado estático

    13:33
Conceptos avanzados de funciones
  • 7
    Scope: alcance de las variables

    Scope: alcance de las variables

    06:32
  • 8
    Closures

    Closures

    08:21
  • 9
    Programando closures

    Programando closures

    07:00
  • 10
    Decoradores

    Decoradores

    06:19
  • 11
    Programando decoradores

    Programando decoradores

    13:05
Estructuras de datos avanzadas
  • 12
    Iteradores

    Iteradores

    13:52
  • 13
    La sucesión de Fibonacci

    La sucesión de Fibonacci

    14:01
  • 14
    Generadores

    Generadores

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

    Mejorando nuestra sucesión de Fibonacci

    06:53
  • 16
    Sets

    Sets

    10:58
  • 17
    Operaciones con sets

    Operaciones con sets

    06:09
  • 18
    Eliminando los repetidos de una lista

    Eliminando los repetidos de una lista

    05:20
Bonus
  • 19
    Manejo de fechas

    Manejo de fechas

    08:44
  • 20
    Time zones

    Time zones

    08:46
Conclusión
  • 21
    Completaste la trilogía. ¿Cómo seguir?

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

    01:30
    David Guerrero Morales Guerrero

    David Guerrero Morales Guerrero

    student•
    hace 4 años
    from time import sleep class FiboIter(): def __init__(self, max_number:int): self.max_number = max_number def __iter__(self): self.n1 = 0 self.n2 = 1 self.counter = 0 return self def __next__(self): if self.counter == 0: self.counter += 1 return self.n1 elif self.counter == 1: self.counter += 1 return self.n2 else: self.aux = self.n1 + self.n2 if self.aux >= self.max_number: raise StopIteration self.n1, self.n2 = self.n2, self.aux self.counter += 1 return self.aux if __name__ == "__main__": for element in FiboIter(39): print(element) sleep(0.1)
      Kenny Rogger Canahualpa Patilla

      Kenny Rogger Canahualpa Patilla

      student•
      hace 4 años

      Si bien es cierto tu codigo funciona con un atributo de instancia, cuando este no tiene un atributo de instancia el codigo no funciona:

      one.PNG
      Para solucionar esto y funcione con o sin un atributo de instancia: "talvez no se el codigo mas eficiente en términos de ahorro de lineas de codigo, pero funciona"
      carbon (2).png

      Dennis Alejandro Salinas Estrada

      Dennis Alejandro Salinas Estrada

      student•
      hace 4 años

      Me inspire en sus comentarios para mi solucion, ademas de que tambien son menos lineas. Que opinan?

    Fabricio González Guasque

    Fabricio González Guasque

    student•
    hace 4 años

    Mi aporte al reto! Saludos

    fibo.jpg

    No puse el output porque es lo mismo que lo visto en la clase, solamente que se detiene cuando llegamos al numero que le pasamos.

      Reinaldo Mendoza

      Reinaldo Mendoza

      student•
      hace 4 años

      Muchas gracias por compartir

      David Silva Apango

      David Silva Apango

      student•
      hace 4 años

      ¿Y si el máximo fuera 0 ó 1?

    Cristian Bastidas

    Cristian Bastidas

    student•
    hace 4 años

    Adicionalmente a la sucesión de Fibonacci hice un iterador que obtiene los números primos que existen hasta cierto n. Me parece increíble lo que se puede hacer con los iteradores. 😮

    Números Primos
      Mauricio Gonzalez Falcon

      Mauricio Gonzalez Falcon

      student•
      hace 4 años

      Genial tu aporte Cristian. Lo único que puedo darte feedback, es que sí el usuario no ingresa un límite, es decir, infinito.

      Como respondería el programa, saludos!

    Dennis Alejandro Salinas Estrada

    Dennis Alejandro Salinas Estrada

    student•
    hace 4 años

    Este es mi solucion, funciona con o sin numero maximo. Decidi hacerlo asi gracias a un comentario que mire.

    import time class FiboIter(): def __init__(self, max=None): self.max = max def __iter__(self): self.n1 = 0 self.n2 = 1 self.counter = 0 return self def __next__(self): if self.counter == 0: self.counter += 1 return self.n1 elif self.counter ==1: self.counter += 1 return self.n2 else: self.aux = self.n1 + self.n2 self.counter += 1 self.n1, self.n2 = self.n2, self.aux if not self.max: return self.aux, self.counter if self.max: if self.aux > self.max: raise StopIteration else: return self.aux, self.counter if __name__ == '__main__': for element in FiboIter(): print(element) time.sleep(.05)

    Una duda que me surgio fue el de como acceder opcionalmente al contador, ya que en el codigo se agrega pero no encontre forma de acceder a el en el codigo como e esta. ademas de cuestionarme su empleo ya que no parece tener algun tipo de utilidad.

      Salvador Sebastian Márquez Herrera

      Salvador Sebastian Márquez Herrera

      student•
      hace 4 años

      Dennis tu código me ayudo mucho, por cierto no es necesario que retornes el contador, con el aux basta para que no te imprima una tupla :)

      Alberto Enrique Alonso De la Hoz

      Alberto Enrique Alonso De la Hoz

      student•
      hace 4 años

      Puedes acceder al indice de la iteración, que en este caso es igual al atributo self.counter de tu clase, utilizando la función enumerate(<iterador>) dentro del for. Siguiendo tu ejemplo:

      for index, element in enumerate( FiboIter() ): print(element) print(index) time.sleep(.05)
    Bryan

    Bryan

    student•
    hace 4 años

    Como detengo la consola?

      Yair Hernández

      Yair Hernández

      student•
      hace 4 años

      ctrl+C

      Andrés López

      Andrés López

      student•
      hace 4 años

      Con ctrl + C

    Jonathan Edwin Gutiérrez Olvera

    Jonathan Edwin Gutiérrez Olvera

    student•
    hace 4 años

    Una solución simple y eficaz 😁

    code.png

      Arturo Escobar Fernandez

      Arturo Escobar Fernandez

      student•
      hace 4 años

      Exacto, la respuesta estaba justo en la clase anterior, no entendí por que se mencionaba en la clase que el reto era difícil. Buena!

      Kenneth Henry Meier Oborski

      Kenneth Henry Meier Oborski

      student•
      hace 4 años

      Con que programa haces que el codigo te salga de esa manera ?

    Francisco Moreno

    Francisco Moreno

    student•
    hace 4 años

    This is my code. Please comment any error did you’ll find.

    <import time class Fibonacci(): def __init__(self, nmax): self.nmax = nmax def __iter__(self): self.num1 = 0 self.num2 = 1 self.counter = 0 return self def __next__(self): if self.counter == 0: self.counter += 1 return self.num1 elif self.counter == 1: self.counter += 1 return self.num2 else: self.aux = self.num1 + self.num2 # Like a break; if the aux > nmax: stop, nmax is the limit. if self.aux > self.nmax: print('Finished.') raise StopIteration self.num1, self.num2 = self.num2, self.aux self.counter += 1 return self.aux def run(): try: nmax = int(input('Introduce the max limit number that can iterate this function: \n')) if nmax > 0: fibonacci = Fibonacci(nmax) for element in fibonacci: print(f' \n{element}') time.sleep(1) elif nmax == 0: print(0) else: print('Introduce a positive number.') run() except ValueError as ve: print('Only integer and positive numbers.') run() if __name__ == '__main__': run() >
      Luis Alejandro Vera Hernandez

      Luis Alejandro Vera Hernandez

      student•
      hace 4 años

      Gracias, me ayudo tu ejemplo, lo vi muy bueno, aunque yo le puse para que imprima la cantidad de ciclos que ingrese el usuario, el tuyo creo que compara la cantidad maxima del usuario con el primer numero al que llegue la sucesion.

    Cesar Hernández Ramírez

    Cesar Hernández Ramírez

    student•
    hace 4 años

    Algo que descubrí al estar haciendo el reto es podemos inicializar un iterador solo con el método next, pero fallará porque no tendrá los atributos que declaremos en el metodo iter. Y lo curioso es que nosotros no podemos utilizar __iter__() para inicializar el iterador como haciamos con iter(objeto) . En cambio con __next__() sí podremos ir avanzadando por cada elemento del iterador 👍

      Luis Felipe Bravo Hernández

      Luis Felipe Bravo Hernández

      student•
      hace 3 años

      Cuando me encontre este problema, lo resolvi llamando a __ iter __ desde __ init __:

      def __init__(self, max=None): self.max = max self.__iter__()
    Tomás Retamal Venegas

    Tomás Retamal Venegas

    student•
    hace 4 años

    Para saber si entendí bien, ¿Un iterable es una instancia de un iterador? Es decir, si un iterador se define como una clase, entonces ¿Al instanciarlo obtenemos un iterable?

      Fernando Hernandez

      Fernando Hernandez

      student•
      hace 4 años

      Es así ...

    Juan Carlos Ruiz Montaño

    Juan Carlos Ruiz Montaño

    student•
    hace 4 años
    import time class FiboIter(): def __init__(selft, max = None): if max == None: selft.max = None else: selft.max = max def __iter__(selft): selft.n1 = 0 selft.n2 = 1 selft.counter = 0 return selft def __next__(selft): def fibo(): #funcion fibonacci selft.aux = selft.n1 + selft.n2 #selft.n1 = selft.n2 #selft.n2 = selft.aux selft.n1, selft.n2 = selft.n2, selft.aux selft.counter += 1 return selft.aux if selft.counter == 0: selft.counter += 1 return selft.n1 elif selft.counter == 1: selft.counter += 1 return selft.n2 elif selft.max == None: return fibo() #ejecucion infinita elif selft.counter >= selft.max: raise StopIteration else: return fibo()#ejecucion controlada if __name__ == "__main__": fibonacci = FiboIter() i = 0 for element in fibonacci: print(str(i) + " Vueltas") print(element) time.sleep(0.05) i += 1
      Jesús Ramón Beltrán Chan

      Jesús Ramón Beltrán Chan

      student•
      hace 4 años

      Como sugerencia, en la primer condición del constructor si max es igual a None, no es necesario volver a asignarle None, puedes usar algo asi en su lugar:

      if max is not None: assert max > 0, "max debe ser mayor que 0" self.max = max
    José Rodrigo Arana Hi

    José Rodrigo Arana Hi

    student•
    hace 4 años

    ¿Por qué el método dunder next puede tomar los atributos de dunder inter? ¿Qué no están en un scope diferente?

      Jonathan Sánchez Luna

      Jonathan Sánchez Luna

      student•
      hace 4 años

      Porque se trata de métodos de una clase, y al instanciar dicha clase, todos sus atributos se encuentran en el scope de la clase, así todos sus métodos los pueden accesar.

      José Rodrigo Arana Hi

      José Rodrigo Arana Hi

      student•
      hace 4 años

      Imaginé que el self (o la instancia) tenía algo que ver. Muchas gracias Jonny, es bueno saber que hay alguien más de BC estudiando (por lo de TJ). Salu2 desde Mxli.

    Gustavo Adolfo Perez Ramos

    Gustavo Adolfo Perez Ramos

    student•
    hace 4 años
    reto_2.png
    Yuri Ochoa

    Yuri Ochoa

    student•
    hace 3 años

    ¡Hola! Dejo mi aporte, estoy en proceso de aprendizaje...agradezco sus comentarios para poder mejorar el programa.

    Iterators.PNG

      Carlos Arturo Gonzalez Meyberg

      Carlos Arturo Gonzalez Meyberg

      student•
      hace 3 años

      Haciendo la prueba de escritorio funciona

    Adriana Razo De León

    Adriana Razo De León

    student•
    hace 4 años

    Hola se aceptan comentarios, no soy nada experta...

    iterators_1.png
    iterators_2.png

      Adriana Razo De León

      Adriana Razo De León

      student•
      hace 4 años

      ups! mi error fue que lo limité al número de fibonacci y no a la posición de la serie...

      iterators_2.png

    Pablo .

    Pablo .

    student•
    hace 4 años
    import time class FiboIter(): def __init__(self, max=None): self.max = max def __iter__(self): self.n1 = 0 self.n2 = 1 self.counter = 0 return self def __next__(self): if not self.max or self.counter <= self.max: if self.counter == 0: self.counter += 1 return self.n1 elif self.counter == 1: self.counter += 1 return self.n2 else: self.aux = self.n1 + self.n2 self.n1, self.n2 = self.n2, self.aux self.counter += 1 return self.aux else: raise StopIteration #Visualizar en consola if __name__ == '__main__': fibonacci = FiboIter(25) for idx, element in enumerate(fibonacci): print(idx, " ", element) time.sleep(0.05)
      Elliot Ramirez

      Elliot Ramirez

      student•
      hace 4 años

      Gracias por tu aporte... indexarlo lo mejor

    Alberto Enrique Alonso De la Hoz

    Alberto Enrique Alonso De la Hoz

    student•
    hace 4 años

    Lo quise hacer de esta manera. Utilicé atributos privados en la clase agregando "__" al inicio de sus nombres. Me pareció correcto inicializar las variables de los números en el constructor y dejar solamente el contador en el método iter(). No se que opinen de esto último.

    class Fibonacci: def __init__( self,upper ): self.__upper = upper self.__num1 = 0 self.__num2 = 1 def __iter__( self ): self.__counter = 0 return self def __next__( self ): if self.__counter < self.__upper: returned = self.__num1 self.__num1 = self.__num2 self.__num2 += returned self.__counter += 1 return returned else: raise StopIteration if __name__ == '__main__': for i in Fibonacci(20): print(i,end=" ")
    Alex Junior Rodriguez Huerta

    Alex Junior Rodriguez Huerta

    student•
    hace 4 años

    Este es mi aporte, entendí que el usuario debería llenar el máximo valor y este debe parar.

    import time class FiboIter(): def __init__(self, max = int(input("Ingresa un valor: "))): self.max = max def __iter__(self): self.n1 = 0 self.n2 = 1 self.counter = 0 self.cnt = 0 return self def __next__(self): if not self.max or self.n1 + self.n2 <= self.max: if self.counter == 0: self.counter += 1 return self.n1 elif self.counter == 1: self.counter += 1 return self.n2 else: self.aux = self.n1 + self.n2 self.n1, self.n2 = self.n2, self.aux self.counter += 1 return self.aux else: raise StopIteration if __name__ == "__main__": fibonacci = FiboIter() for element in fibonacci: print(element) time.sleep(1)
    Bryan Estiven Silva Mercado

    Bryan Estiven Silva Mercado

    student•
    hace 4 años
    import time class fiboIter(): def __init__(self,max): self.max = max def __iter__(self): self.number1 = 0 self.number2 = 1 self.counter = 0 return self def __next__(self): if self.counter == 0: self.counter +=1 return self.number1 elif self.counter == 1: self.counter +=1 return self.number1 elif self.number2 < self.max: self.aux = self.number1 + self.number2 """ esto <self.number1 = self.number2 self.number2 = self.aux> se puede reducir de la siguiente forma """ self.number1, self.number2 = self.number2, self.aux self.counter +=1 return self.aux else: raise StopIteration if __name__ == "__main__": fibonacci = fiboIter(1597) for element in fibonacci: print(element) time.sleep(1)
    María Camila Fernández Espinel

    María Camila Fernández Espinel

    student•
    hace 4 años

    No se si lo que hice esta bien, acepto cualquier tipo de comentarios :P

    import time class Fiboiter(): def __init__(self, max = None) -> None: self.max = max self.aux = 0 def __iter__(self): self.n1 = 0 self.n2 = 1 self.counter = 0 return self def __next__(self): if self.counter == 0: self.counter += 1 return self.n1 elif self.counter == 1: self.counter += 1 return self.n2 elif self.aux <= self.max: self.aux = self.n1 + self.n2 # self.n1 = self.n2 # self.n2 = self.aux self.n1, self.n2 = self.n2, self.aux self.counter += 1 return self.aux elif self.aux >= self.max: raise StopIteration if __name__ == "__main__": max = int(input("Enter the max of the Fibonacci sucession's: ")) fibonacci = Fiboiter(max) for element in fibonacci: print(element) time.sleep(0.05)
      Diego Fernando Pedraza Cardenas

      Diego Fernando Pedraza Cardenas

      student•
      hace 4 años

      Veo dos detalles en tu código, cuando no ingresas un argumento es decir None el te da el error que debes ingresar un valor numérico, en mi caso lo deje para que si no ingresas nada el te de números hasta infinito y lo otro es que siempre te imprime un numero después del máximo, si haces la prueba por ejemplo con 6 el te alcanza a imprimir 8.

    Ariel Ricardo Cornejo Jiménez

    Ariel Ricardo Cornejo Jiménez

    student•
    hace 4 años

    Hola, alguien puede correr mi codigo y ayudarme a ver que hice mal?

    el counter aumenta bien pero queda en loop el programa , no entra a la exception

    import time class FiboIter(): '''Clase que realiza la sucesion de fibonacci hasta un numero maximo''' def __init__(self, max=None): self.max = max def __iter__(self): self.n1 = 0 self.n2 = 1 self.counter = 0 return self def __next__(self): if self.max != None: print("valor max-> ", self.max, " - ", " counter-> ", self.counter) else: max = input("ingrese numero maximo de la sucesion: ") self.max = max if self.counter == self.max: print("max y counter iguales") raise StopIteration elif self.counter == 0: self.counter += 1 return self.n1 elif self.counter == 1: self.counter += 1 return self.n2 else: self.aux = self.n1 + self.n2 # self.n1 = self.n2 # self.n2 = self.aux self.n1 , self.n2 = self.n2, self.aux #swapin' values self.counter += 1 return self.aux if __name__ == '__main__': fibonacci = FiboIter() for element in fibonacci: print(element) time.sleep(1)
      Pablo Antipan Quiñenao

      Pablo Antipan Quiñenao

      student•
      hace 4 años

      Hola! Faltaba transformar el input a integer:

      import time class FiboIter: """Clase que realiza la sucesion de fibonacci hasta un numero maximo""" def __init__(self, max=None): self.max = max def __iter__(self): self.n1 = 0 self.n2 = 1 self.counter = 0 return self def __next__(self): if self.max != None: print("valor max-> ", self.max, " - ", " counter-> ", self.counter) else: max = input("Ingrese numero maximo de la sucesion: ") self.max = max print(self.counter, self.max) if self.counter == int(self.max): print("max y counter iguales") raise StopIteration if self.counter == 0: self.counter += 1 return self.n1 elif self.counter == 1: self.counter += 1 return self.n2 else: self.aux = self.n1 + self.n2 # self.n1 = self.n2 # self.n2 = self.aux self.n1, self.n2 = self.n2, self.aux # swapin' values self.counter += 1 return self.aux if __name__ == "__main__": fibonacci = FiboIter() for element in fibonacci: print(element) time.sleep(0.2)

      Saludos!

      Ariel Ricardo Cornejo Jiménez

      Ariel Ricardo Cornejo Jiménez

      student•
      hace 4 años

      muchas gracias pablo, saludos!

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