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.

Diagramas de flujo

Diagrama de flujo (actividad) del ejercicio 04

Diagrama de flujo (grafo) del ejercicio 04

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.

  1. def potencia(base, exp=2):exp=2 es el valor por defecto. Puedes llamar potencia(3) (y exp valdrá 2) o potencia(3, 4) (y exp valdrá 4). base no tiene defecto, así que es obligatorio. Regla de Python: los parámetros con defecto van siempre después de los obligatorios.
  2. resultado = 1 y for _ in range(exp): resultado *= base — multiplicamos base por sí misma exp veces. El acumulador arranca en 1 (neutro del producto), y así exp = 0 devuelve 1 correctamente. Usamos _ como nombre de la variable del bucle porque no la necesitamos: solo cuenta cuántas vueltas dar.
  3. El enunciado prohíbe **: la idea es reconstruir la potencia con un bucle en vez de con el operador nativo.
  4. if entrada_exp == "": — este bloque, ya fuera de la función, decide si el usuario quiere el defecto. Si pulsa Enter sin escribir, input devuelve la cadena vacía "" y llamamos potencia(base) sin segundo argumento; si escribe algo, lo convertimos con int() 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)}")

Ejecútalo en el navegador

▶ Visualízalo paso a paso en Python Tutor — ve cómo cambian las variables línea a línea.

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.

Conexiones