Ejercicio 03 — Pide N e imprime N! (factorial)
Dificultad: amarillo · Módulo 03 (Bucles)
Enunciado
Pide N e imprime N! (factorial)
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.
resultado = 1— el acumulador arranca en1, NO en0. Al multiplicar, el elemento neutro es el uno: si empezaras en0, cualquier producto daría0y el factorial sería siempre cero.for i in range(2, n + 1)— recorre los factores desde2hastan. Empezamos en2porque multiplicar por1no cambia nada; el+ 1incluye an.resultado *= i— forma corta deresultado = resultado * i: multiplica el acumulado por el factor de esta vuelta.print(f"{n}! = {resultado}")— al terminar,resultadovalen!.
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}")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.