Ejercicio 04 — Escribe potencia(base, exp=2) usando un bucle
Dificultad: amarillo · Módulo 04 (Funciones)
Enunciado
Escribe potencia(base, exp=2) usando un bucle (sin **). Pide base y exponente al usuario.
Cómo se resuelve
Un parámetro con valor por defecto hace que un argumento sea opcional: si no lo pasas, la función usa el valor que fijaste al definirla.
def potencia(base, exp=2):—exp=2es el valor por defecto. Puedes llamarpotencia(3)(yexpvaldrá 2) opotencia(3, 4)(yexpvaldrá 4).baseno tiene defecto, así que es obligatorio. Regla de Python: los parámetros con defecto van siempre después de los obligatorios.resultado = 1yfor _ in range(exp): resultado *= base— multiplicamosbasepor sí mismaexpveces. El acumulador arranca en 1 (neutro del producto), y asíexp = 0devuelve 1 correctamente. Usamos_como nombre de la variable del bucle porque no la necesitamos: solo cuenta cuántas vueltas dar.- El enunciado prohíbe
**: la idea es reconstruir la potencia con un bucle en vez de con el operador nativo. if entrada_exp == "":— este bloque, ya fuera de la función, decide si el usuario quiere el defecto. Si pulsa Enter sin escribir,inputdevuelve la cadena vacía""y llamamospotencia(base)sin segundo argumento; si escribe algo, lo convertimos conint()y lo pasamos.
Trampa habitual: definir el defecto con un valor mutable, como def f(lista=[]), se comporta de forma sorprendente en Python porque el defecto se crea una sola vez y se comparte entre llamadas. Con un número como exp=2 no hay peligro, pero conviene saberlo pronto: los defectos mutables (listas, diccionarios) son una fuente clásica de bugs.
Para practicar — cópialo y complétalo
Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.
# Curso de Python — Modulo 04: Funciones
# Ejercicio 04 — PRACTICA (rellena los TODO)
# Enunciado: Escribe potencia(base, exp=2) usando un bucle (sin **). Pide base y exponente al usuario.
# Dificultad: amarillo
# Ejecutar: python3 ej04_practica.py
def potencia(base, exp=2):
"""Calcula base elevado a exp usando un bucle. Por defecto exp=2."""
# TODO: inicializa resultado a 1
# TODO: repite el bucle exp veces (range(exp)) multiplicando resultado por base en cada iteracion
# TODO: devuelve resultado
pass
# TODO: pide la base con int(input(...))
base = None # reemplaza None
# TODO: pide el exponente con input(); si el usuario pulsa Enter sin escribir nada (cadena vacia ""),
# llama a potencia(base) sin el segundo argumento (usa el default)
# si no, convierte a int y llama a potencia(base, exp)
entrada_exp = None # reemplaza None: input("Introduce el exponente (Enter para usar 2): ")
# TODO: imprime con f-string: "<base> ^ <exp> = <resultado>"Solución — cópiala y ejecútala
# Curso de Python — Modulo 04: Funciones
# Ejercicio 04 — MODELO (resuelto)
# Enunciado: Escribe potencia(base, exp=2) usando un bucle (sin **). Pide base y exponente al usuario.
# Dificultad: amarillo
# Ejecutar: python3 ej04_modelo.py
def potencia(base, exp=2):
"""Calcula base elevado a exp usando un bucle. Por defecto exp=2."""
resultado = 1
for _ in range(exp):
resultado *= base
return resultado
base = int(input("Introduce la base: "))
entrada_exp = input("Introduce el exponente (Enter para usar 2): ")
# Si el usuario pulsa Enter sin escribir nada, usamos el valor por defecto
if entrada_exp == "":
print(f"{base} ^ 2 = {potencia(base)}")
else:
exp = int(entrada_exp)
print(f"{base} ^ {exp} = {potencia(base, exp)}")Cómo usarlo
Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.