Ejercicio 03 — Pide N e imprime N! (factorial)

Dificultad: amarillo · Módulo 03 (Bucles)

Enunciado

Pide N e imprime N! (factorial)

Diagramas de flujo

Diagrama de flujo (actividad) del ejercicio 03

Diagrama de flujo (grafo) del ejercicio 03

Cómo se resuelve

El factorial es un acumulador igual que la suma, pero multiplicando en vez de sumar, y ahí está el detalle que hay que cuidar: el valor inicial.

  1. resultado = 1 — el acumulador arranca en 1, NO en 0. Al multiplicar, el elemento neutro es el uno: si empezaras en 0, cualquier producto daría 0 y el factorial sería siempre cero.
  2. for i in range(2, n + 1) — recorre los factores desde 2 hasta n. Empezamos en 2 porque multiplicar por 1 no cambia nada; el + 1 incluye a n.
  3. resultado *= i — forma corta de resultado = resultado * i: multiplica el acumulado por el factor de esta vuelta.
  4. print(f"{n}! = {resultado}") — al terminar, resultado vale n!.

Un detalle bonito de Python: los enteros no se desbordan. 20! en C con int daría basura por overflow; aquí Python amplía el número automáticamente y calcula el valor exacto por grande que sea.

Trampa habitual: inicializar resultado = 0 (copiando el patrón de la suma). En una multiplicación el neutro es 1; con 0 todo el producto se anula.

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 03: Bucles
# Ejercicio 03 — PRACTICA (rellena los TODO)
# Enunciado: Pide N e imprime N! (factorial)
# Dificultad: amarillo
# Ejecutar: python3 ej03_practica.py
 
# TODO 1: Lee N desde teclado y conviertelo a entero.
n = None  # reemplaza esto
 
# TODO 2: El factorial es un producto acumulado. ¿Con que valor debes inicializar
#         el acumulador para que las multiplicaciones funcionen?
#         (Pista: no es 0, ese destroza el producto.)
resultado = None  # reemplaza esto
 
# TODO 3: Recorre los factores desde 2 hasta N (inclusive) y ve multiplicando.
#         (¿Por que empezamos en 2 y no en 1?)
for i in range(0):  # ajusta los argumentos
    pass  # TODO: multiplica resultado por i
 
# TODO 4: Imprime con formato "N! = <valor>".

Solución — cópiala y ejecútala

# Curso de Python — Modulo 03: Bucles
# Ejercicio 03 — MODELO (resuelto)
# Enunciado: Pide N e imprime N! (factorial)
# Dificultad: amarillo
# Ejecutar: python3 ej03_modelo.py
 
n = int(input("Introduce N: "))
 
resultado = 1
for i in range(2, n + 1):
    resultado *= i  # multiplica el acumulador por cada factor
 
print(f"{n}! = {resultado}")

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