0% encontró este documento útil (0 votos)
4 vistas15 páginas

Temas Clave para Dominar Python

Cargado por

jo Ge
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas15 páginas

Temas Clave para Dominar Python

Cargado por

jo Ge
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

🐍

Python
Análisis del Código y Temas Necesarios
Después de revisar tu script, estos son los temas, conceptos y módulos de
Python que necesitas dominar para entenderlo y replicarlo:

TEMARIO

Fundamentos de Python (Lo Ultra Básico y un Poco Más):

Variables y Tipos de Datos: str, int, bool, list, dict, set, None.

Operadores: Aritméticos, de comparación, lógicos (and, or, not), de


pertenencia (in, not in).

Entrada/Salida: input(), print(), f-strings (cadenas formateadas).

Comentarios (#).

Estructura de un script: if __name__ == "__main__":.

Control de Flujo:

Condicionales: if, elif, else.

Bucles: for (iterar sobre secuencias y diccionarios), while.

Sentencias de control de bucles: break, continue.

Funciones:

Definición (def).

Parámetros y argumentos (posicionales, con valores por defecto).

Valores de retorno (return).

Alcance de variables (local vs. global, aunque el script usa


principalmente locales y parámetros).

Estructuras de Datos (Más a Fondo):

Strings (Cadenas de Texto):

Python 1
Métodos: .strip(), .lower(), .capitalize(), .startswith(), .endswith(),
.split(), .join().

Indexación y Slicing.

Concatenación.

Listas:

Creación, indexación, slicing.

Métodos: .append(), .remove(), .pop(), len().

Comprensión de listas (opcional, pero útil).

Diccionarios:

Creación, acceso a valores por clave.

Añadir/modificar pares clave-valor.

Métodos: .get() (con valor por defecto), .items(), .keys(),


.values(), setdefault().

Iterar sobre diccionarios.

Sets:

Creación, añadir (.add(), .update()), eliminar (.remove(),


.discard()).

Útiles para colecciones sin duplicados y operaciones de


conjuntos (aunque aquí se usa principalmente para
session_practiced_words).

Manejo de Archivos:

Abrir y cerrar archivos: open(), with statement (muy importante).

Modos de apertura: 'r' (leer), 'w' (escribir), 'a' (añadir).

Leer de archivos: .read(), .readline(), .readlines().

Escribir en archivos: .write().

Codificación de caracteres: encoding='utf-8'.

Manejo de Errores y Excepciones:

try, except <TipoDeError> as e, else, finally.

Python 2
Capturar excepciones específicas ([Link],
UnicodeDecodeError, FileNotFoundError, OSError, TypeError,
ValueError, AttributeError, Exception genérica).

Módulos de la Biblioteca Estándar:

json:

[Link](): Cargar datos JSON desde un archivo.

[Link](): Guardar datos Python como JSON en un archivo.

Parámetros como indent y ensure_ascii=False.

datetime:

[Link](): Obtener la fecha actual.

[Link](): Convertir cadena ISO a objeto


date.

.isoformat(): Convertir objeto date a cadena ISO.

[Link]: Para calcular diferencias de tiempo o sumar


días a una fecha.

[Link]().strftime(): Para formatear fechas y


horas en cadenas (usado en nombres de archivo de respaldo).

os:

[Link](): Comprobar si un archivo o directorio existe.

[Link](): Renombrar/mover archivos.

[Link](): Eliminar archivos.

[Link](): Obtener el tamaño de un archivo.

sys:

[Link], [Link], [Link]: Streams estándar.

[Link](): Salir del programa.

[Link]() (usado para forzar UTF-8, es algo


avanzado pero presente).

unicodedata:

[Link](): Para normalizar texto Unicode (NFC).

Python 3
re (Expresiones Regulares):

[Link](): Reemplazar patrones en cadenas.

[Link]: Flag para ignorar mayúsculas/minúsculas.

Conceptos básicos de patrones (aunque el script usa patrones


simples).

Módulos de Terceros (Instalación con pip):

ollama:

[Link](): Para interactuar con el modelo de chat.

[Link](): Para generar texto.

Entender la estructura de los mensajes y respuestas


(diccionarios).

Conceptos Específicos de la Aplicación:

Lógica de SRS (Sistema de Repetición Espaciada): Cómo se


calculan los niveles y las próximas fechas de revisión.

Diseño del prompt para la IA: Cómo se construyen los prompts para
obtener las respuestas deseadas.

Manejo de estado de la sesión (session_active, chat_history).

Parseo de comandos del usuario (ej. /review, #palabra).

Normalización y limpieza de texto para UTF-8 y consistencia.

Plan de Entrenamiento Secuencial con Mini-Proyectos

Este plan está diseñado para construir conocimiento de forma incremental.


Cada "Día" es más una "Unidad Temática". Tómate el tiempo que necesites
para cada una.

MÓDULO 0: Preparación y Fundamentos Absolutos (1-2 días)

Teoría:

Instalar Python.

Configurar un editor de código (VS Code es una buena opción con


su extensión de Python).

Variables: qué son, cómo nombrarlas.

Python 4
Tipos de datos básicos: str (cadenas), int (enteros), float
(decimales), bool (booleanos).

Función print() para mostrar información.

Función input() para obtener datos del usuario.

Comentarios (#).

Operadores aritméticos básicos (+, -, *, /).

Mini-Proyecto 0.1: Saludo Personalizado

Pide al usuario su nombre.

Imprime un saludo personalizado, ej: "¡Hola, [nombre]! Bienvenido a


Python."

Mini-Proyecto 0.2: Calculadora Simple (Suma)

Pide al usuario dos números.

Suma los números (¡cuidado! input() devuelve strings, necesitarás


int()).

Imprime el resultado.

MÓDULO 1: Tomando Decisiones y Repitiendo Tareas (2-3 días)

Teoría:

Operadores de comparación (==, !=, <, >, <=, >=).

Operadores lógicos (and, or, not).

Sentencias if, elif, else.

Bucles while.

Bucles for (con range()).

Sentencias break y continue.

Modulo 1 - minicurso

Mini-Proyecto 1.1: Adivina el Número

Genera un número secreto (puedes fijarlo tú al principio, ej.


numero_secreto = 7).

Pide al usuario que adivine el número en un bucle while.

Python 5
Dale pistas ("demasiado alto", "demasiado bajo").

Termina cuando adivine o se rinda (ej. ingresando "salir").

Mini-Proyecto 1.2: Menú Interactivo Básico

Presenta un menú con opciones (ej. "1. Saludar", "2. Despedir", "3.
Salir").

Usa un bucle while para mostrar el menú hasta que elijan "Salir".

Usa if/elif/else para ejecutar la acción correspondiente.

MÓDULO 2: Organizando el Código con Funciones (2-3 días)

Teoría:

Qué es una función y por qué usarla (reutilización, organización).

Definir funciones: def nombre_funcion():.

Llamar funciones: nombre_funcion().

Parámetros y argumentos.

Valores de retorno (return).

Documentar funciones (docstrings """docstring""").

Modulo 2 - Minicurso

Mini-Proyecto 2.1: Calculadora Mejorada con Funciones

Crea funciones separadas para sumar(a, b), restar(a, b),


multiplicar(a, b), dividir(a, b).

Cada función debe tomar dos números como parámetros y retornar


el resultado.

Modifica tu "Menú Interactivo Básico" para llamar a estas


funciones.

Mini-Proyecto 2.2: Función de Validación de Entrada

Crea una función obtener_numero_valido(mensaje_prompt) que pida


al usuario un número hasta que ingrese uno válido (usa un try-
except simple dentro para ValueError al intentar int()). Debe retornar
el número entero.

Python 6
MÓDULO 3: Colecciones de Datos I - Listas y Strings (3-4 días)

Teoría:

Listas:

Creación mi_lista = [] o mi_lista = [1, 2, 3].

Acceder a elementos por índice mi_lista[0].

Modificar elementos.

Añadir elementos: .append().

Eliminar elementos: .remove() (por valor), .pop() (por índice).

Iterar sobre listas con for item in mi_lista:.

Función len().

Strings (más a fondo):

Son inmutables.

Métodos útiles: .lower(), .upper(), .strip(), .startswith(),


.endswith(), .split(), PALABRA in CADENA.

Concatenación (+) y f-strings (ej. f"Hola {nombre}").

Mini-Proyecto 3.1: Lista de Tareas Simple

Permite al usuario:

1. Añadir tarea a una lista.

2. Ver todas las tareas (numeradas).

3. Marcar tarea como completada (puedes eliminarla o prefijarla


con "[X]").

4. Salir.

Usa una lista para almacenar las tareas (strings).

Mini-Proyecto 3.2: Procesador de Comandos Básico

Pide al usuario un comando, ej: "añadir tarea ir al super".

Usa user_input.lower().split() para separar el comando de los


argumentos.

Si el primer elemento es "añadir tarea", imprime "Añadiendo: [resto


de la cadena]".

Python 7
Si es "ver tareas", imprime "Mostrando tareas".

Esto empieza a simular el parseo de comandos de tu script.

MÓDULO 4: Colecciones de Datos II - Diccionarios y Sets (2-3 días)

Teoría:

Diccionarios:

Pares clave-valor: mi_dict = {"nombre": "Ana", "edad": 30}.

Acceder a valores: mi_dict["nombre"].

Método .get("clave", valor_por_defecto) (¡muy útil!).

Añadir/modificar: mi_dict["ciudad"] = "Madrid".

Eliminar: del mi_dict["edad"].

Iterar: for clave, valor in mi_dict.items():.

Sets:

Colecciones desordenadas de elementos únicos: mi_set = {1, 2,


3}.

Añadir: .add().

Eliminar: .remove() (da error si no existe), .discard() (no da


error).

Operador in para comprobar pertenencia.

Mini-Proyecto 4.1: Agenda de Contactos Simple

Usa un diccionario donde las claves son nombres de contactos y


los valores son sus números de teléfono.

Permite:

1. Añadir contacto (nombre y teléfono).

2. Buscar teléfono por nombre.

3. Listar todos los contactos.

4. Eliminar contacto.

Mini-Proyecto 4.2: Contador de Palabras

Pide al usuario una frase.

Python 8
Usa un diccionario para contar la frecuencia de cada palabra en la
frase.

Pista: [Link]() para normalizar, [Link]() para obtener


palabras.

MÓDULO 5: Haciendo los Datos Persistentes - Archivos y JSON (3-4 días)

Teoría:

Abrir archivos con with open("[Link]", "modo") as f:.

Modos: 'r' (leer), 'w' (escribir, sobrescribe), 'a' (añadir al final).

Leer: [Link](), [Link](), for line in f:.

Escribir: [Link]("texto\n").

Importancia de encoding="utf-8".

Módulo json:

[Link](datos_python, archivo_abierto, indent=4): Guardar


dict/list a JSON.

[Link](archivo_abierto): Cargar JSON a dict/list.

ensure_ascii=False para caracteres no ASCII.

Mini-Proyecto 5.1: Lista de Tareas Persistente

Modifica tu "Lista de Tareas Simple" (Mini-Proyecto 3.1).

Al iniciar, intenta cargar las tareas desde un archivo [Link]. Si


no existe o está vacío, empieza con una lista vacía.

Cada vez que se añade o elimina una tarea, guarda la lista completa
en [Link].

Mini-Proyecto 5.2: Configuración de Usuario Simple

Crea un programa que pregunte al usuario su nombre y color


favorito.

Guarda esta información en un diccionario y luego en un archivo


[Link].

Al volver a ejecutar, si [Link] existe, saluda al usuario por su


nombre y menciona su color favorito. Si no, pide la información.
(Esto se parece a load_config y save_config).

Python 9
MÓDULO 6: Programación Defensiva - Manejo de Errores (2-3 días)

Teoría:

Bloques try...except.

Capturar excepciones específicas: ValueError, FileNotFoundError,


TypeError, KeyError, IndexError, [Link].

Usar as e para obtener el mensaje de error.

Cláusula else (se ejecuta si no hay excepciones).

Cláusula finally (se ejecuta siempre).

Mini-Proyecto 6.1: Robusteciendo la Lista de Tareas

Añade manejo de errores a tu "Lista de Tareas Persistente":

Al cargar [Link]: ¿Qué pasa si el archivo está corrupto (no


es JSON válido)? Usa try-except [Link].

Al cargar: ¿Qué pasa si el archivo no existe? Usa try-except


FileNotFoundError.

Al pedir al usuario un número de tarea para eliminar: ¿Qué pasa


si introduce texto o un número fuera de rango? Usa try-except
ValueError e IndexError.

Mini-Proyecto 6.2: División Segura

Crea una función que divida dos números.

Maneja TypeError si los inputs no son números.

Maneja ZeroDivisionError si se intenta dividir por cero.

MÓDULO 7: Superpoderes con la Biblioteca Estándar - os, datetime, sys


(3-4 días)

Teoría:

os:

[Link]("ruta_archivo").

[Link]("ruta_archivo").

[Link]("viejo_nombre", "nuevo_nombre").

[Link]("ruta_archivo").

Python 10
datetime:

[Link]().

[Link](days=X).

.isoformat() y [Link]().

[Link]().strftime("%Y%m%d%H%M%S") para
timestamps.

sys:

[Link]() para terminar el programa.

[Link], [Link], [Link] (conceptual, no necesitas


manipularlos mucho al principio).

Mini-Proyecto 7.1: Recordatorios con Fechas

Modifica tu "Lista de Tareas Persistente".

Al añadir una tarea, permite opcionalmente añadir una fecha de


vencimiento (ej. "YYYY-MM-DD").

Guarda la fecha junto con la tarea (quizás ahora cada tarea es un


diccionario: {"descripcion": "...", "fecha_vencimiento": "..."}).

Al listar tareas, indica cuántos días faltan o si ya venció (usa


datetime).

Mini-Proyecto 7.2: Gestor de Archivos de Respaldo Simple

Pide al usuario el nombre de un archivo.

Si el archivo existe, crea una copia de respaldo renombrándolo,


añadiendo un timestamp al nombre (ej. [Link] ->
[Link].20231027103000).

Usa [Link](), [Link](),


[Link]().strftime().

MÓDULO 8: Texto Avanzado - Unicode y Expresiones Regulares (Básico)


(2-3 días)

Teoría:

Breve introducción a Unicode y la importancia de utf-8.

Python 11
unicodedata: [Link]('NFC', texto) para
consistencia.

re (Expresiones Regulares):

Concepto básico: patrones para buscar en texto.

[Link](patron, reemplazo, texto) para reemplazar.

[Link].

Patrones muy simples: \s (espacio), . (cualquier caracter), *


(cero o más), + (uno o más), ^ (inicio de cadena), $ (fin de
cadena).

Mini-Proyecto 8.1: Normalizador de Texto Simple

Crea una función que tome un texto.

Lo convierta a minúsculas.

Le aplique [Link]('NFC', ...).

Use [Link](r'\s+', ' ', texto) para reemplazar múltiples espacios por
uno solo.

Elimine espacios al inicio y al final (.strip()).

Mini-Proyecto 8.2: Extractor de Hashtags

Pide al usuario un texto que pueda contener hashtags (ej. "Me


encanta #Python y #programar").

Usa [Link](r'#\w+', texto) para extraer todas las palabras que


empiezan con #.

(El \w coincide con caracteres de palabra: letras, números y guion


bajo).

MÓDULO 9: Conectando con el Exterior - Librerías de Terceros (ollama)


(2-3 días)

Teoría:

Qué es pip (pip install nombre_libreria).

Cómo importar y usar funciones de librerías instaladas.

Leer la documentación básica de ollama-python o basarse en cómo


lo usa tu script.

Python 12
Estructura de [Link]() y [Link](): cómo enviar
prompts, cómo es la respuesta.

Mini-Proyecto 9.1: Cliente Ollama Súper Básico

Instala la librería ollama.

Escribe un script que:

1. Defina un prompt simple (ej. "Cuéntame un chiste corto").

2. Use [Link](model='gemma3:4b', prompt=prompt)


(¡asegúrate que tu modelo Gemma esté sirviéndose!).

3. Imprima la respuesta response['response'].

Mini-Proyecto 9.2: Mini-Chatbot de una Sola Vuelta

Pide al usuario una pregunta.

Envía la pregunta al modelo ollama usando [Link]() con una


estructura de mensajes simple: [{'role': 'user', 'content':
pregunta_usuario}].

Imprime la respuesta del asistente.

MÓDULO 10: Ensamblando el Rompecabezas - Tu Proyecto VocabChat


(Tiempo Indefinido)

Ahora, con todo el conocimiento anterior, es momento de diseccionar


TU script:

1. Relee el script completo. Muchos más detalles tendrán sentido


ahora.

2. Identifica las funciones principales: main, load_vocab, save_vocab,


add_word, get_words_to_review, calculate_next_review,
evaluate_session_with_ai, etc.

3. Entiende el flujo de main(): Cómo se inicializa, el bucle principal,


cómo se procesan los comandos.

4. Analiza cada función por separado: ¿Qué parámetros recibe? ¿Qué


devuelve? ¿Qué lógica interna tiene? ¿Qué otros módulos o
funciones usa?

5. Presta atención al manejo de chat_history y


messages_for_api_call.

Python 13
6. Observa cómo se maneja la UTF-8 y la normalización en todo el
script.

Proyecto Final: Reconstrucción o Mejora de VocabChat

Opción A (Reconstrucción Guiada):

Empieza un archivo Python nuevo.

Intenta re-escribir función por función, basándote en tu


entendimiento y consultando el original.

Comienza con load_config, save_config, load_vocab,


save_vocab. Pruébalas.

Luego, implementa la lógica de añadir palabras.

Después, el bucle principal con un par de comandos simples


(#palabra, /list).

Ve añadiendo más comandos y la interacción con Ollama


progresivamente.

Opción B (Entendimiento y Modificación):

Si te sientes más cómodo, trabaja sobre el script original.

Añade comentarios extensos explicando cada línea o bloque.

Intenta añadir una nueva funcionalidad pequeña (ej. un nuevo


comando /stats que muestre cuántas palabras tienes, cuántas
para revisar hoy).

Modifica un prompt para ver cómo cambia la respuesta de la IA.

Durante este módulo:

Usa print() para depurar y ver el estado de las variables.

Experimenta: cambia cosas pequeñas y observa el resultado.

¡No tengas miedo de romperlo! Siempre puedes volver a la versión


original.

Consejos Adicionales para el Aprendizaje:

1. "Ensuciarse las Manos" es Clave: Tal como dijiste. Programa, prueba,


falla, corrige.

Python 14
2. No Copies y Pegues Ciegamente: Intenta escribir el código tú mismo. Si
consultas, entiende lo que hace antes de escribirlo.

3. Divide y Vencerás: Si una función o parte del script te parece muy


compleja, aíslala. Intenta entender esa pequeña parte antes de ver cómo
encaja en el todo.

4. Lee Errores: Los mensajes de error de Python son tus amigos. Te dicen
dónde está el problema y, a menudo, por qué.

5. Google es tu Amigo: "python how to read json file", "python dictionary get
method", "ollama python example".

6. Paciencia y Persistencia: Habrá momentos de frustración. Es normal.


Descansa un poco y vuelve a intentarlo.

7. Interleaving: El plan ya tiene algo de esto, ya que los mini-proyectos


posteriores suelen requerir conceptos de los anteriores. Cuando estés en el
Módulo 10, estarás constantemente saltando entre todos los conceptos
aprendidos.

Este plan es una guía. Si un módulo te lleva más o menos tiempo, está bien. Lo
importante es que sientas que estás comprendiendo y aplicando los
conceptos.
¡Mucho éxito con este emocionante reto! Estoy aquí si tienes preguntas sobre
algún concepto específico mientras avanzas.

Python 15

También podría gustarte