- 1

Fundamentos de Python: variables, booleanos, if/else y bucles
01:36 - 2

Instalación de Python, VS Code y Git en Windows
06:37 - 3

Configuración de variables de entorno para Python en Windows
02:10 - 4

Comandos básicos de Python en la terminal de Windows
04:20 - 5

Sintaxis e indentación básica en Python con Visual Studio Code
09:46 - 6

Comentarios en Python: líneas simples y multilínea
04:48 - 7

Variables en Python: asignación, nomenclatura y convenciones
09:25 - 8

Asignación múltiple de variables en Python
04:55 - 9

Tipos de datos en Python: strings, números y colecciones
10:41 - 10

Manipulación y conversión de tipos numéricos en Python
08:24 - 11

Manejo de comillas, múltiples líneas y búsqueda en strings de Python
10:36 - 12

Slicing, replace y split para manipular strings en Python
10:27 - 13

Booleanos en Python: True, False y casting a bool
05:46 - 14

Tipo de dato None en Python
02:08 quiz de Primeros Pasos con Python
Escritura y lectura de archivos en Python con proyecto de cafetería
Clase 32 de 32 • Curso de Fundamentos de Python
Contenido del curso
- 15

Operadores aritméticos en Python: suma, resta, módulo y precedencia
09:01 - 16

Operadores de asignación y walrus en Python
06:04 - 17

Operadores lógicos OR y NOT con booleanos en Python
09:33 - 18

Condicionales en Python: if, else, and, or y pass
11:33 - 19

Sentencia match en Python 3.10 para control de flujo
03:28 - 20

Bucles while en Python: condiciones, break y continue
07:50 - 21

Bucles for en Python: recorrido de secuencias y listas
12:16 quiz de Lógica de Programación y Control de Flujo
- 22

Listas en Python: creación, modificación y métodos esenciales
14:01 - 23

Tuplas en Python: ordenadas, inmutables y con duplicados
09:55 - 24

Conjuntos en Python: creación, métodos y operaciones básicas
14:02 - 25

Diccionarios en Python: pares clave-valor ordenados y anidados
15:16 quiz de Estructuras de Datos Fundamentales
Aprende a manejar la escritura y lectura de archivos en Python con un proyecto práctico de máquina de café. Aquí verás cómo usar un diccionario para validar opciones, confirmar un pedido y persistirlo en un TXT con with open, modo de apertura adecuado y encoding correcto. Además, sumarás manejo de errores con try/except, lectura con readlines y numeración con enumerate.
¿Qué construimos y por qué importa?
Creamos un flujo completo para gestionar pedidos de café y su historial. La clave está en dos funciones: una para pedir y escribir en un archivo, y otra para leer y mostrar el historial. Así consolidas habilidades de E/S con archivos, control de flujo y trabajo con colecciones.
- Diccionario de opciones: las keys representan opciones y las values nombres de cafés.
- Validación de entrada: se verifica si la opción ingresada existe en las keys.
- Persistencia: cada pedido se guarda en pedidos.txt usando modo de apertura adecuado.
- Lectura segura: el historial se muestra manejando la ausencia del archivo.
¿Cómo se valida la opción y se guarda el pedido?
Se consulta la opción del usuario y se valida contra las keys del diccionario. Si es válida, se confirma el pedido y se escribe una línea en el archivo de pedidos. Se usa modo 'a' para agregar sin sobrescribir y encoding UTF-8 para caracteres con acentos.
¿Cómo usar un diccionario y validar keys?
- Usar un diccionario con opciones y nombres de café.
- Verificar pertenencia: if opcion in cafes.
- Informar error cuando la opción no es válida.
¿Cómo confirmar el pedido y escribir en archivo?
- Imprimir confirmación con concatenación y texto descriptivo.
- Abrir con with open en modo 'a' y encoding 'utf-8'.
- Escribir el nombre del café con salto de línea '\n'.
- Usar una constante para el nombre del archivo: ARCHIVO_PEDIDOS.
# pedidos.py
ARCHIVO_PEDIDOS = "pedidos.txt"
def pedir_cafe():
cafes = {"1": "expreso", "2": "capuchino", "3": "latte", "4": "americano"}
opcion = input("Elige un café que prefieras: ")
if opcion in cafes: # valida contra las keys
cafe_elegido = cafes[opcion]
print("Has pedido un " + cafe_elegido + ". Preparando tu café")
# escritura en modo append con UTF-8
with open(ARCHIVO_PEDIDOS, "a", encoding="utf-8") as archivo:
archivo.write(cafe_elegido + "\n")
else:
print("Opción no válida. Por favor, intenta de nuevo.")
¿Cómo leer el historial con manejo de errores en Python?
La lectura del historial requiere contemplar que el archivo no exista aún. Se utiliza try/except para capturar FileNotFoundError. Si hay contenido, se muestra numerado con enumerate(start=1) y cada línea se limpia con strip para quitar el salto de línea.
¿Cómo proteger la lectura con try y except?
- Imprimir un encabezado de historial.
- Abrir el archivo en modo lectura con encoding 'utf-8'.
- Capturar FileNotFoundError y avisar que no existe historial.
¿Cómo listar líneas con enumerate y strip?
- Usar readlines para obtener todas las líneas.
- Verificar si la lista no está vacía.
- Recorrer con enumerate(pedidos, start=1) para numerar.
- Aplicar strip para remover el '\n' final.
# historial.py
ARCHIVO_PEDIDOS = "pedidos.txt"
def ver_historial():
try:
print("\nHistorial de pedidos")
with open(ARCHIVO_PEDIDOS, "r", encoding="utf-8") as archivo:
pedidos = archivo.readlines()
if pedidos:
for i, pedido in enumerate(pedidos, start=1):
print(str(i) + ". " + pedido.strip())
else:
print("Aún no hay ningún pedido")
except FileNotFoundError:
print("\nTodavía no existe un historial de pedidos")
¿Cómo integrar ver historial en el main?
- Importar funciones con from modulo import funcion.
- Atar la opción 1 a pedir_cafe y la 2 a ver_historial.
- Usar break en la opción 3 para salir del bucle while.
# main.py
from pedidos import pedir_cafe
from historial import ver_historial
while True:
print("1. Pedir un café")
print("2. Ver el historial de pedidos")
print("3. Salir")
opcion = input("Elige una opción: ")
if opcion == "1":
pedir_cafe()
elif opcion == "2":
ver_historial()
elif opcion == "3":
print("Muchas gracias por haber tomado nuestros riquísimos cafés")
break
¿Te gustaría compartir cómo adaptarías este flujo para nuevos tipos de bebidas o formatos de historial? Deja tu comentario y cuéntanos qué parte te resultó más útil.