Skip to content
11 changes: 6 additions & 5 deletions 01_intro/ejercicio_guiado/calculadora_v1.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,26 @@
# TODO 1: Pide el primer número al usuario
# Pista: usa input() y guarda el valor en una variable
# primer_numero = ...

num1 = input("¿Cuál es el primer número?: ")

# TODO 2: Pide el segundo número al usuario
# segundo_numero = ...

num2 = input("¿Y el segundo número?: ")

# TODO 3: Convierte los strings a números decimales
# Pista: usa float() para permitir decimales (ej: 3.5)
# num1 = float(primer_numero)
# num2 = ...

num1 = float(num1)
num2 = float(num2)

# TODO 4: Realiza la suma
# resultado = ...

resultado = num1 + num2

# TODO 5: Muestra el resultado
# Pista: print("El resultado es:", resultado)

print("Resultado:", resultado)

# ¡Ya está! Ejecuta el programa y prueba con diferentes números
# Ejemplos para probar:
Expand Down
20 changes: 16 additions & 4 deletions 02_estructuras/ejercicio_guiado/calculadora_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@

# TODO 1: Pide el primer número al usuario y conviértelo a float
# num1 = ...

num1 = float(input("Primer número: "))

# TODO 2: Pide el segundo número al usuario y conviértelo a float
# num2 = ...

num2 = float(input("Segundo número: "))

# TODO 3: Pregunta qué operación desea realizar
# Pista: input("¿Qué operación deseas realizar? (+, -, *, /): ")
# operacion = ...

operacion = input("¿Cuál de las operaciones quieres realizar? ¿Sumar, restar, multplicar o dividir?: ")

# TODO 4: Realiza la operación correspondiente usando if/elif/else
# Pista: Compara la variable 'operacion' con "+", "-", "*", "/"
Expand All @@ -45,12 +45,24 @@
# else:
# print("❌ Operación no válida")

if operacion == "+":
resultado = num1 + num2
elif operacion == "-":
resultado = num1 - num2
elif operacion == "*":
resultado = num1 * num2
elif operacion == "/":
resultado = num1 / num2
else:
print("No es válida esa operación")
resultado = None

# TODO 5: Muestra el resultado usando f-strings
# Pista: f"El resultado de {num1} {operacion} {num2} = {resultado:.2f}"
# El :.2f muestra solo 2 decimales
# print(f"...")

if resultado is not None:
print(f"El resultado de {num1} {operacion} {num2} = {resultado:.2f}")

# ¡Perfecto! Ahora tu calculadora puede hacer las 4 operaciones básicas
#
Expand Down
46 changes: 37 additions & 9 deletions 03_control_flujo/ejercicio_guiado/calculadora_v3.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# TODO 1: Crea el bucle principal
# while True:
# # Todo el código va aquí dentro

while True:

# TODO 2: Muestra el menú
# print("\n=== CALCULADORA ===")
Expand All @@ -33,34 +33,52 @@
# print("3. Multiplicar")
# print("4. Dividir")
# print("5. Salir")


print("\n=== CALCULADORA ===")
print("1. Sumar")
print("2. Restar")
print("3. Multiplicar")
print("4. Dividir")
print("5. Salir")



# TODO 3: Pide la opción al usuario
# opcion = input("\nElige una opción: ")

opcion = input("\nElige una opción: ")

# TODO 4: Si elige salir (opción 5), termina el programa
# if opcion == "5":
# print("¡Hasta pronto! 👋")
# break # Sale del bucle while

if opcion == "5":
print("¡Hasta pronto!")
break

# TODO 5: Valida que la opción sea válida (1, 2, 3 o 4)
# if opcion not in ["1", "2", "3", "4"]:
# print("❌ Opción no válida. Intenta de nuevo.")
# continue # Vuelve al inicio del bucle (muestra el menú de nuevo)

if opcion not in ["1", "2", "3", "4"]:
print("Opción no válida. Intentalo de nuevo.")

# TODO 6: Pide los dos números
# num1 = float(input("Primer número: "))
# num2 = float(input("Segundo número: "))

try:
num1 = float(input("Primer número: "))
num2 = float(input("Segund número: "))
except ValueError:
print("Incorrecto.")

# TODO 7: Controla la división por cero
# if opcion == "4" and num2 == 0:
# print("❌ Error: No se puede dividir por cero")
# continue # Vuelve al menú sin hacer la operación

if opcion == "4" and num2 == 0:
print("No se puede dividir por cero.")
continue

# TODO 8: Realiza la operación según la opción elegida
# if opcion == "1":
Expand All @@ -75,11 +93,21 @@
# elif opcion == "4":
# resultado = num1 / num2
# simbolo = "/"


if opcion == "1":
resultado = num1 + num2
simbolo = "+"
elif opcion == "2":
resultado = num1 - num2
simbolo = "-"
elif opcion == "3":
resultado = num1 * num2
simbolo = "*"
elif opcion == "4":
resultado = num1 / num2
simbolo = "/"
# TODO 9: Muestra el resultado con f-string
# print(f"✅ {num1} {simbolo} {num2} = {resultado:.2f}")

print(f"{num1} {simbolo} {num2} = {resultado:.2f}")

# ¡Excelente trabajo! Ahora tienes una calculadora interactiva que:
# - Se repite hasta que el usuario quiera salir
Expand Down
57 changes: 49 additions & 8 deletions 04_funciones/ejercicio_guiado/calculadora_v4.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

def sumar(a, b):
"""Suma dos números.

Args:
a: Primer número
b: Segundo número
Expand All @@ -33,20 +33,21 @@ def sumar(a, b):
La suma de a y b
"""
# return a + b
pass # Borra esto y escribe el return
pass
return a + b


def restar(a, b):
"""Resta dos números."""
# TODO: Implementa la resta
pass

return a - b

def multiplicar(a, b):
"""Multiplica dos números."""
# TODO: Implementa la multiplicación
pass

return a * b

def dividir(a, b):
"""Divide dos números.
Expand All @@ -60,7 +61,7 @@ def dividir(a, b):
"""
# TODO: Implementa la división
pass

return a / b

# TODO 2: Crea una función para mostrar el menú
def mostrar_menu():
Expand All @@ -72,6 +73,12 @@ def mostrar_menu():
# print("4. Dividir")
# print("5. Salir")
pass
print("\n=== CALCULADORA ===")
print("1. Sumar")
print("2. Restar")
print("3. Multiplicar")
print("4. Dividir")
print("5. Salir")


# TODO 3: Crea una función para obtener dos números del usuario
Expand All @@ -85,7 +92,13 @@ def obtener_numeros():
# num2 = float(input("Segundo número: "))
# return num1, num2
pass

try:
num1 = float(input("Primer número: "))
num2 = float(input("Segundo: "))
return num1, num2
except ValueError:
print("Entrada incorrecta.")
return obtener_numeros()

# TODO 4: Crea la función principal que contiene el bucle del programa
def main():
Expand Down Expand Up @@ -135,13 +148,41 @@ def main():
# print(f"✅ {num1} {simbolo} {num2} = {resultado:.2f}")

pass

while True:
mostrar_menu()
opcion = input("\nElige una opción: ")
if opcion == 5:
print("¡Hasta pronto!")
break
if opcion not in ["1", "2", "3", "4"]:
print("¡Opción no válida!")
continue
num1, num2 = obtener_numeros()

if opcion == "4" and num2 == 0:
print("No se puede dividir por cero...")
continue
if opcion == "1":
resultado = sumar(num1, num2)
simbolo = "+"
elif opcion == "2":
resultado = restar(num1, num2)
simbolo = "-"
elif opcion == "3":
resultado = multiplicar(num1, num2)
simbolo = "*"
elif opcion == "4":
resultado = dividir(num1, num2)
simbolo = "/"

print(f"{num1} {simbolo} {num2} = {resultado:.2f}")

# TODO 5: Punto de entrada del programa
# Este patrón permite que el archivo sea importable sin ejecutarse automáticamente
# if __name__ == "__main__":
# main()

if __name__ == "__main__":
main()

# ¡Excelente! Has refactorizado tu calculadora con funciones.
#
Expand Down
52 changes: 49 additions & 3 deletions 05_colecciones/ejercicio_guiado/calculadora_v5.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def obtener_numeros():
# TODO 1: Crea una lista global para almacenar el historial
# (Nota: en programación avanzada evitamos globales, pero aquí es didáctico)
# historial = []

historial = []

def guardar_operacion(num1, num2, operacion, resultado):
"""Guarda una operación en el historial.
Expand All @@ -77,18 +77,28 @@ def guardar_operacion(num1, num2, operacion, resultado):
operacion: Símbolo de la operación (+, -, *, /)
resultado: Resultado de la operación
"""

# TODO 2: Crea un diccionario con los datos de la operación
# operacion_dict = {
# "num1": num1,
# "num2": num2,
# "operacion": operacion,
# "resultado": resultado
# }


# TODO 3: Añade el diccionario a la lista historial
# historial.append(operacion_dict)

pass
operacion_dict = {
"num1": num1,
"num2": num2,
"operacion": operacion,
"resultado": resultado
}
historial.append(operacion_dict)



def mostrar_historial():
Expand All @@ -108,7 +118,12 @@ def mostrar_historial():
# print(f"{i}. {op['num1']} {op['operacion']} {op['num2']} = {op['resultado']:.2f}")

pass

if not historial:
print("No hay operaciones en el historial")
return
print("\nHistorial de operaciones")
for i, op in enumerate(historial, 1):
print(f"{i}. {op['num1']} {op['operacion']} {op['num2']} = {op['resultado']:.2f}")

# ===== FUNCIÓN PRINCIPAL =====

Expand Down Expand Up @@ -160,7 +175,38 @@ def main():
# guardar_operacion(num1, num2, simbolo, resultado)

pass

while True:
mostrar_menu()
opcion = input("\nElige una opción: ")
if opcion == "6":
print("¡See you soon!")
break
if opcion == "5":
mostrar_historial()
continue
if opcion not in ["1", "2", "3", "4"]:
print("Opción no válida")
continue

num1, num2 = obtener_numeros()

if opcion == "4" and num2 == 0:
print("No se puede dividir entre cero...")

if opcion == "1":
resultado = sumar(num1, num2)
simbolo = "+"
elif opcion == "2":
resultado = restar(num1, num2)
simbolo = "-"
elif opcion == "3":
resultado = multiplicar(num1, num2)
simbolo = "*"
elif opcion == "4":
resultado = dividir(num1, num2)
simbolo = "/"

print(f"{num1} {simbolo} {num2} ? {resultado:.2f}")

if __name__ == "__main__":
main()
Expand Down
Loading