Resumen Breve
Este video de CS50 introduce Python como un lenguaje de programación de alto nivel, contrastándolo con C y Scratch. Se destacan la simplicidad y la rapidez con la que se pueden resolver problemas en Python, ejemplificado con la reimplementación de un corrector ortográfico. También se exploran las funciones, tipos de datos, condicionales y bucles en Python, comparándolos con sus contrapartes en C. Además, se introduce el concepto de programación orientada a objetos y el uso de bibliotecas externas mediante pip.
- Introducción a Python como lenguaje de alto nivel.
- Comparación con C y Scratch.
- Ejemplos de implementación rápida de soluciones.
- Exploración de funciones, tipos de datos, condicionales y bucles.
- Introducción a la programación orientada a objetos y uso de bibliotecas externas.
Introducción
El curso de CS50 se traslada de C a Python, un lenguaje de programación de nivel superior. Aprender C proporciona una comprensión profunda de cómo funcionan las computadoras y los lenguajes de programación, lo que facilita la apreciación de Python, Java y C++. Python permite escribir programas complejos con menos código, enfocándose en la resolución de problemas y la creación de productos. El objetivo es que los estudiantes se sientan cómodos aprendiendo nuevos lenguajes por sí mismos, utilizando la documentación y recursos disponibles.
Python
En C, se usaba make hello para compilar y ejecutar programas, mientras que en Python se ejecuta directamente el programa con python hello.py. Un programa simple en Python, como print("Hola mundo"), elimina la necesidad de #include, int main void, llaves y punto y coma. La función print es más amigable que printf y automáticamente añade una nueva línea. Python es un lenguaje de nivel superior que permite resolver problemas rápidamente.
Corrector Ortográfico
Se implementa un corrector ortográfico en Python, similar al problema del conjunto de problemas 5 de CS50. Se declara una variable global llamada words como un conjunto (set) para almacenar palabras sin duplicados. La función check verifica si una palabra está en el conjunto, y la función load abre un diccionario, lee su contenido y actualiza el conjunto de palabras. Las funciones size y unload retornan el tamaño del diccionario y liberan la memoria, respectivamente. La implementación en Python es más corta y sencilla que en C, pero puede ser más lenta debido a la interpretación del código.
Filtro
Se implementan filtros de imagen en Python utilizando la biblioteca PIL (Python Image Library). Se muestra cómo aplicar un filtro de desenfoque a una imagen con solo cuatro líneas de código. También se implementa la detección de bordes en una imagen utilizando la misma biblioteca. Estos ejemplos demuestran cómo Python simplifica tareas complejas en comparación con C.
Funciones
Se comparan las funciones en Scratch, C y Python. En Python, la función print reemplaza a printf y no requiere punto y coma ni nueva línea explícita. Python utiliza módulos y paquetes en lugar de archivos de encabezado. Se muestra cómo obtener entrada del usuario con get_string de la biblioteca CS50 y con la función input de Python. Se explica el uso de parámetros nombrados para modificar el comportamiento de las funciones, como el parámetro end en la función print.
Tipos de Datos
Se comparan los tipos de datos en C y Python. Python tiene bool, float, int y str, pero no tiene char ni punteros. Se muestra cómo convertir un programa de calculadora de C a Python, utilizando la función input para obtener números del usuario y la función int para convertirlos a enteros. Se explica que la función input retorna una cadena, por lo que es necesario convertirla a entero para realizar operaciones aritméticas.
Calculadora
Se crea un programa de calculadora en Python que solicita dos números al usuario y muestra su suma. Se explica que la función input retorna una cadena, por lo que es necesario convertirla a entero para realizar operaciones aritméticas. Se muestra cómo realizar la conversión directamente en la función input para simplificar el código.
Condicionales
Se comparan las estructuras condicionales (if, else if, else) en Scratch, C y Python. En Python, no se utilizan paréntesis ni llaves, pero se requiere indentación. La abreviatura para else if es elif. Se muestra un ejemplo de un programa que compara dos números y muestra si son iguales, menores o mayores.
Comparar
Se compara un programa que compara dos cadenas en C y Python. En C, se necesita la función strcmp para comparar cadenas, mientras que en Python se puede usar el operador ==. Se muestra un ejemplo de un programa que solicita dos cadenas al usuario y muestra si son iguales o diferentes. Python simplifica la comparación de cadenas al comparar los valores en lugar de las direcciones de memoria.
Programación Orientada a Objetos
Se explica el concepto de programación orientada a objetos (OOP) en Python. Se muestra cómo utilizar métodos de cadena, como lower, para convertir una cadena a minúsculas. Se explica que los métodos son funciones que están dentro de los objetos y que se acceden mediante la notación de punto. Se muestra un ejemplo de un programa que solicita al usuario si está de acuerdo y utiliza el método lower para convertir la entrada a minúsculas antes de compararla con "y" o "yes".
copy.py
Se compara la copia de cadenas en C y Python. En C, se necesita asignar memoria dinámicamente y copiar los caracteres uno por uno, mientras que en Python se puede usar el operador de asignación. Se muestra un ejemplo de un programa que solicita una cadena al usuario y crea una copia capitalizada de la misma utilizando el método capitalize. Python simplifica la copia de cadenas al manejar la gestión de memoria automáticamente.
Bucles
Se comparan los bucles en Scratch, C y Python. En Python, se pueden usar bucles while y for. Se muestra un ejemplo de un programa que imprime "meow" tres veces utilizando un bucle while. También se muestra cómo utilizar un bucle for con la función range para iterar sobre una secuencia de números.
Meow
Se explora la implementación de bucles en Python, comparándolos con C. Se muestra cómo usar un bucle while para imprimir "meow" tres veces. Se introduce el bucle for en Python, que itera sobre una lista de valores. Se explica el uso de la función range para generar una secuencia de números. Se introduce la convención de usar un guion bajo (_) como nombre de variable en un bucle for cuando la variable no se utiliza. Se muestra cómo implementar un bucle infinito con while True y cómo definir funciones en Python con la palabra clave def.
Truncamiento
Se discute el problema del truncamiento en C al dividir enteros y cómo Python lo resuelve automáticamente al retornar un valor de punto flotante cuando es necesario. Se muestra cómo Python mantiene la precisión en operaciones de división, a diferencia de C, donde se requiere una conversión explícita a float.
Excepciones
Se introduce el concepto de excepciones en Python como una forma de manejar errores sin depender únicamente de los valores de retorno. Se muestra cómo utilizar bloques try y except para capturar errores, como ValueError, que ocurre al intentar convertir una cadena no numérica a un entero. Se explica cómo las excepciones permiten escribir código más limpio y robusto al separar la lógica principal del manejo de errores.
Mario
Se reimplementa el problema de Mario de CS50 en Python. Se muestra cómo imprimir una pirámide de altura especificada por el usuario utilizando bucles for y la función print. Se explica cómo utilizar un bucle while para solicitar al usuario una altura válida y cómo romper el bucle una vez que se obtiene una entrada válida. Se muestra cómo imprimir caracteres en la misma línea utilizando el parámetro end de la función print.
Listas
Se introduce el concepto de listas en Python como una alternativa a los arrays en C. Se muestra cómo crear una lista, agregar elementos a la lista con el método append y calcular el promedio de los elementos en la lista utilizando las funciones sum y len. Se explica cómo las listas en Python son dinámicas y pueden crecer o disminuir según sea necesario.
Diccionarios
Se introduce el concepto de diccionarios en Python como una forma de almacenar pares clave-valor. Se muestra cómo crear un diccionario, agregar elementos al diccionario y buscar valores por clave. Se explica cómo los diccionarios son similares a las tablas hash y cómo se pueden utilizar para implementar estructuras de datos complejas. Se muestra cómo combinar listas y diccionarios para representar datos tabulares, como una hoja de cálculo.
sys
Se introduce el módulo sys en Python, que proporciona acceso a variables y funciones específicas del sistema. Se muestra cómo utilizar sys.argv para acceder a los argumentos de la línea de comandos. Se explica cómo utilizar sys.exit para salir del programa con un código de estado específico.
csv
Se introduce el módulo csv en Python, que permite leer y escribir archivos CSV (Comma Separated Values). Se muestra cómo utilizar csv.writer para escribir datos en un archivo CSV y cómo utilizar csv.DictWriter para escribir datos en un archivo CSV con encabezados. Se explica cómo utilizar la declaración with para abrir archivos y asegurarse de que se cierren correctamente.
pip
Se introduce el programa pip para instalar paquetes de Python. Se muestra cómo utilizar pip install para instalar bibliotecas de terceros, como cowsay y pyttsx3. Se explica cómo utilizar estas bibliotecas para agregar funcionalidad adicional a los programas de Python.

