
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Qué proyectos haremos?
Descarga e instalación del SDK de Python que nos permitirá programar en un ambiente local.
Hablamos sobre distintos ambientes de desarrollo (IDE).
Realizaremos la descarga e instalación de Sublime Text, el editor que utilizaremos para programar.
Agregamos mayor versatilidad a Sublime Text al instalar Package Manager y los plugins:
- SublimeREPL
- AdvancedNewFile
- SideBarEnhancements
Una prueba rápida para asegurarnos que nuestro ambiente se encuentra bien configurado:
Copie el código:
print("Hola mundo")
En el editor y guarde un archivo con extension .py
Seguidamente utilizando Control+B (PC) o Command+B (Mac) ejecute el código
Asegúrese de elegir el ambiente Python
Una explicación sobre qué trata nuestro proyecto 7 afortunado y cómo queremos que se vea la interfaz.
Vemos una explicación general de cómo crear una interfaz. Todos estos temas serán profundizados en las secciones posteriores.
Creación de la lógica del juego en Python 3 de nuestro juego de 7 afortunado
Definimos qué es programación y cuáles son las partes básicas del ciclo de vida de un programa incluyendo:
- Análisis
- Diseño
- Implementación
- Compilación o ejecución
- Fase de Pruebas
Qué es un algoritmo?
Una secuencia de pasos ejecutados en orden que pueden repetirse y tener condicionales que permiten resolver un problema. Se puede ver como una receta de cocina.
Vemos formas de representarlos mediante:
- Diagramas de flujo
- Pasos numerados
Y resolvemos un ejemplo sobre el algoritmo para encontrar el mayor entre tres números
Cuál es el paradigma Orientado a Objetos?
Los objetos pueden tener como partes fundamentales:
- Atributos (características propias del objeto)
- Métodos (acciones que podemos llevar a cabo con ellos)
Notas importantes:
1. Los atributos son características que describen al objeto y cada objeto que se pueda crear a partir de la especificación de la clase (llamado instancia) van a tener todas las características aquí definidas Por ejemplo:
- color
- nombre
- marca
- peso
2. Los métodos, al ser acciones típicamente llevan verbos dentro de su nombre. Por ejemplo:
- Acelerar
- Frenar
- Encender
Las variables nos permiten almacenar valores espeíficos dentro de la memoria. Podemos crear cuantas variables se deseen e ir modificando sus valores según sea requerido.
Los tipos de datos primitivos son:
- Números enteros (3,10, 32455)
- Números reales (3.14, 10.4920920, 6.0)
- Boolean (valores binarios con valor True o False)
- Hileras de caracteres o Strings ( 'a', 'hola mundo')
Nota: los strings en Python se pueden representar con comilla simple o doble de la forma: 'hilera' o "hilera"
Los comentarios son líneas especiales que son omitidas por el interprete y permiten ayudar a quien lee el código entender mejor qué se está haciendo. Es parte de la documentación interna del código. En Python, se utiliza el # para crear un comentario de una línea. Cualquier caracter agregado después del # y hasta el siguiente cambio de linea será tomado como un comentario y omitido.
Las variables tienen la anatomía:
nombre_de_la_variable = valor o nombreDeLaVariable = valor
Al nombre de la variable se le asigna el valor resultado a la derecha del =
Contenido extra para la comprensión de qué son variables, cómo se declaran y los tipos de datos primitivos
Nuestro primer objeto será una clase Carta que noes permitirá almacenar como características (atributos) de clase un número (representación numérica 1-14) y un palo (o símbolo para la carta "Espadas", "Corazones", etc).
Adicionalmente agregaremos un par de métodos (acciones) que nos permitirán manipular la clase a la hora de crear las instancias.
Haremos algunas mejoras a nuestra clase agregando parámetros a nuestro método __init__ y creando una nueva instancia
Crearemos un objeto se tipo Persona con el que podremos interactuar.
Tendrá como atributos:
- Nombre
- Edad
Y como métodos haremos uno que nos permita bautizar a la persona y uno adicional que nos permita cumplir años
En esta lectura realizaremos mejoras a nuestro objeto persona agregando un constructor de clase
Comprenderá el objetivo de tener un constructor para inicializar los valores y asegurarse que cualquier método que intente usar un atributo lo haga de forma correcta ya que todos estarán inicializados a la hora de invocar a los métodos.
En esta lectura comenzaremos a ver cómo pueden los objetos interactuar entre si.
En este caso haremos la interacción entre un Mazo de cartas y una Carta.
Al finalizar comprenderá como realizar interacción entre cualquier par de objetos y como importar objetos personalizados creados por nosotros.
En este video hablamos sobré la qué son métodos y funciones. Cómo se le pueden pasar datos por parámetros y cuál es la finalidad de utilizarlos.
Adicional:
Existen dos estándares:
- Camel case: consiste en tener las palabras juntas, sin espacio e iniciar con mayúscula todas las palabras excepto la primera para la declaración de métodos o variables de clase. Por ejemplo: aproximacionDePi, calcularVelocidad
- Snake case: consiste en separar cada par de palabras utilizando guión bajo. Por ejemplo aproximacion_de_pi, calcular_velocidad
El estándar depende del lenguaje que se utilice, por ejemplo, Java, C# y C++ utilizan Camel case como estándar del lenguaje, mientras que: Python, Ruby on Rails utilizan snake case.
En este video hablamos sobre cómo ampliar las posibilidades de nuestros métodos al hacer ejemplos de funciones con parámetros predeterminados y ver la anatomía general de los mismos.
En este video nos adentramos en la elaboración de métodos de clase y podemos apreciar la diferencia entre una función y un método de clase
Aprenderá cómo imprimir en consola utilizando el comando print junto con distintas variaciones.
También cómo solicitar datos en pantalla usando el método input
Ponemos en práctica la teoría vista en el video anterior y haremos pruebas de todas las variaciones discutidas
En el mismo esquema de IO, hablamos sobre cómo se manejan las excepciones en Python para buscar hacer programas más robustos utilizando try y except evitando que los programas finalicen de forma abrupta
Aprenderemos cómo crear un programa que maneje excepciones básicas evitando que finalice de forma abrupta y deje un estado inconsistente en la memoria
Aprenderemos a abstraer las funcionalidades de una interfaz en un objeto para poder utilizarlas cada vez que necesitemos pedir datos a un usuario.
Aprenderá qué y cuáles son opreradores lógicos (>,>=, <, <=) y los operadores relacionales and, or junto al not
Nuestro objetivo será entender el orden de prioridad entre los distintos operadores y un ejemplo de cómo la computadora resuelve expresiones
Aprenderá sobre la forma en que se puede controlar el flujo de un programa utilizando if, elif y else
Llevamos el tema a la práctica y aprenderá cómo se maneja el flujo de un programa mediante ejemplos
Continuamos nuestro objeto carta y mediante flujos de control añadimos la capacidad de imprimir el número de la carta.
En este caso agregamos utilizando condicionales la capacidad de tomar distintos caminos dependiendo de la carta que se elija, y de esta forma tener una interfaz diferenciada a la lógica de clase que tenemos actualmente. Eso quiere decir que lo que se guarda como estado es distinto a lo que se le despliega al usuario.
Aprenderá sobre la teoría básica de las estructuras de repetición.
Cómo funciona un ciclo visto a partir de diagramas de flujo
Aprenderá sobre la teoría básica de las estructuras de repetición.
Llevado a un ejemplo que ejecutamos manualmente a partir de diagramas de flujo
Aprenderá sobre la teoría básica de las estructuras de repetición.
Continuamos nuestro ejemplo anterior pero lo llevamos a la práctica utilizando ciclos de tipo for y while
Aprendemos cómo funcionan los ciclos anidados mediante la creación de nuestro mazo de cartas
Aprenderá sobre optimizaciones que se pueden hacer para mejorar la calidad del código creado
Utilizar el conocimiento adquirido para resolver un problema utilizando condicionales y ciclos
Una posible solución a nuestro problema
Aprendemos a utlizar comandos básicos de la biblioteca Turtle y a dibujar un cuadrado
¡Domina la Programación Orientada a Objetos en Python 3 mientras desarrollas proyectos!
¿Te interesa aprender a programar desde cero o mejorar tus habilidades en Python? ¡Este curso es para vos! A lo largo de este curso, no solo aprenderás los fundamentos de la Programación Orientada a Objetos (POO), sino que también aplicarás lo aprendido en proyectos de juegos que te ayudarán a reforzar tus conocimientos.
¿Qué aprenderá?
Fundamentos de la Programación Orientada a Objetos (POO): Comprende conceptos clave como clases, objetos, atributos, y métodos, y aprende a aplicarlos en Python 3.
Desarrollo de Proyectos: Desarrollarás juegos populares como Blackjack, Ahorcado y Buscaminas, utilizando tanto interfaces gráficas con TKInter como la consola.
Dominio de Python 3: Explora desde lo básico hasta conceptos avanzados como recursividad, manejo de archivos, y estructuras de datos como listas y matrices.
Resolución de Problemas y Diseño de Algoritmos: Aprende a diseñar y resolver problemas de programación que se traducen fácilmente a otros lenguajes de programación.
Práctica Continua: Refuerza lo aprendido con ejercicios prácticos diseñados para poner a prueba tus habilidades en Python 3.
Temas Principales:
Configuración inicial y ejecución de programas en Python
Conceptos básicos de POO, incluyendo herencia y decoradores
Creación y manipulación de clases, funciones, y métodos en Python
Estructuras de control, listas por comprensión y manejo de excepciones
Interfaces gráficas y depuración de código con herramientas avanzadas
Trabajar con archivos de texto y datos persistentes
Técnicas avanzadas como funciones lambda, decoradores, y el operador walrus
Temas de forma detallada por sección son:
Configuración inicial de un ambiente para programar
Ejecución de un programa en Python
Principios de Programación Orientada a Objetos (POO) con Python
Qué son algoritmos para programación?
Para qué funcionan, cómo se definen y cómo se pueden crear mediante diagramas de flujo sencillos
Tipos de datos
Tipos de dato primitivos como numeros enteros, reales, boolean e hileras de caracteres
Colecciones de datos en Python 3
Qué son clases, atributos y métodos y cómo utilizarlos para crear clases en Python 3
Declaración, utilización y diferencia entre funciones y métodos en Python 3
Paso de parámetros a las funciones y métodos
Cómo pasar parámetros predeterminados
Pasar múltiples parámetros a un método con los operadores * y **
Estructuras de control o selección
Estructuras de repetición en Python 3
Listas en Python (declaración y uso)
Matrices (declaración y uso en Python)
Recursión o recursividad en Python 3
Conceptos básicos sobre la recursividad, cómo funciona la pila de recursividad y ejemplos
Manipulación de hileras de caracteres y transformaciones de datos en Python
Manipulación de archivos de texto (almacenamiento persistente) en Python
Creación de scripts con Python 3
Lectura y escritura de directorios de archivos para manipular datos
Manejo de excepciones para crear programas más robustos
Interfaces gráficas con TKInter
Depuración del código con Python 3 y bibliotecas en pip
Cómo depurar el código
Instalación de paquetes utilizando pip
Introducción a bibliotecas como: Ice Cream y PDB
Herencia
Conceptos básicos
Herencia simple
Herencia múltiple
Herencia con múltiples clases derivadas
Formas pitónicas usando Python 3
Decoradores para creación de clases en Python
Funciones anónimas
Algunas funciones como zip, zip_longest
Listas por comprensión
Estándares para el guión bajo simple ( _ ) y doble ( __ ) en Python
Funciones lambda
Operador walrus
Zip y Zip longest
¿Por qué este curso?
Este curso es ideal tanto para principiantes como para aquellos que desean profundizar en la Programación Orientada a Objetos y desarrollar proyectos interesantes. Con explicaciones claras, ejemplos prácticos, y una metodología de enseñanza centrada en la práctica, estarás listo para aplicar tus nuevas habilidades en cualquier proyecto de programación.