Repetir con for y while
range(5) produce 0, 1, 2, 3 y 4: cinco números, y el 5 no es uno de ellos.
Ejecuta un bucle de tres líneas y mira cómo crece total
Copia este programa en IDLE y ejecútalo antes de leer la explicación. Luego cambia la lista por tus propios números y ejecútalo otra vez.
total = 0
for n in [3, 5, 2]:
total = total + n
print(n, total)
print("done", total)3 3
5 8
2 10
done 10La línea for toma los elementos de la lista de uno en uno. En cada vuelta, la variable n se refiere al siguiente elemento, y las líneas con sangría de abajo se ejecutan una vez con ese valor. Una pasada por las líneas con sangría se llama iteración. Después del último elemento, Python sigue con la primera línea sin sangría, así que "done" se imprime una sola vez, al final. Una tabla de seguimiento deja el patrón claro.
| Pasada | n | total tras la pasada | Impreso |
|---|---|---|---|
| (antes) | 0 | ||
| 1 | 3 | 3 | 3 3 |
| 2 | 5 | 8 | 5 8 |
| 3 | 2 | 10 | 2 10 |
| (después) | 10 | done 10 |
La variable total se llama acumulador: empieza en 0 antes del bucle y reúne algo en cada pasada. La línea total = total + n es tan común que Python tiene una forma corta, total += n. Contar funciona igual con count += 1.
range() te hace los números
Para repetir algo un número fijo de veces, recorre range(). range(5) da 0, 1, 2, 3, 4: empieza en 0 y se detiene antes del 5, igual que un segmento. range(1, 6) da de 1 a 5. Un tercer número fija el paso, así que range(0, 10, 2) da los pares del 0 al 8. La tabla de multiplicar del 7, que todo alumno coreano recita en segundo grado, es un bucle de dos líneas.
for i in range(1, 10):
print(7, "x", i, "=", 7 * i)7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63Un bucle for también puede recorrer los caracteres de una cadena, lo que facilita contar letras.
count = 0
for ch in "banana":
if ch == "a":
count += 1
print(count)3while repite mientras una condición siga siendo True
Un bucle while no tiene una lista que recorrer. Comprueba una condición, ejecuta las líneas con sangría si es True y vuelve a comprobar, una y otra vez. Sirve para tareas en las que no sabes de antemano el número de pasadas, como «sigue ahorrando hasta que el total llegue a 50 000 wones». Algo dentro del bucle debe cambiar la condición, o el bucle nunca termina. Si eso pasa, detén el programa con Ctrl+C.
saved = 0
weeks = 0
while saved < 50000:
saved += 12000
weeks += 1
print(weeks, saved)5 60000break sale de un bucle al instante, incluso a la mitad. Es útil cuando buscas algo y puedes parar en cuanto lo encuentras. El bucle de abajo se detiene en la primera nota menor que 60 y nunca llega al 88.
for s in [72, 91, 55, 88]:
if s < 60:
print("first below 60:", s)
break
print("ok", s)ok 72
ok 91
first below 60: 55| for x in ... | Ejecuta las líneas con sangría una vez por cada elemento |
| range(a, b) | Números enteros desde a hasta b sin incluir b |
| while | Repite mientras la condición sea True |
| acumulador | Una variable que reúne un total a lo largo de las pasadas |
| += | total += n es la forma corta de total = total + n |
| break | Sale del bucle de inmediato |
- ¿Qué imprime esto?
for i in range(3): print(i)0
1
21
2
30
1
2
33
- ¿Qué imprime esto?
total = 0 for n in range(1, 5): total += n print(total) - ¿Qué imprime esto?
print(list(range(0, 10, 3))) - ¿Qué imprime esto?
total = 0 for n in [1, 2, 3]: total += n print(total)61
3
61
2
30
1
3
- ¿Qué imprime esto?
count = 0 for ch in "seoul": if ch in "aeiou": count += 1 print(count) - ¿Qué imprime esto?
n = 1 while n < 20: n = n * 2 print(n) - ¿Qué imprime esto?
for s in [5, 8, 3, 9]: if s > 6: print(s) break - ¿Cuántas veces se imprime hi?
for i in range(2, 8): print("hi") - ¿Qué imprime esto?
word = "" for ch in "abc": word = ch + word print(word) - Pon las líneas en orden para que el programa imprima la suma de 1 a 100.Salida
5050
- «range(1, 10) llega hasta 10». Se detiene antes del 10, así que el último valor es 9. Para de 1 a 10, escribe range(1, 11).
- «Mi bucle while está bien; solo tarda mucho». Si nada dentro del bucle cambia la condición, nunca se detiene. Comprueba que la variable de la condición se actualice en cada pasada, y presiona Ctrl+C para detener un bucle descontrolado.
- «Poner print dentro o fuera del bucle no cambia nada». Con sangría bajo el for, se ejecuta en cada pasada; en el margen izquierdo, se ejecuta una vez después del bucle. Decide si quieres cada paso o solo la respuesta final.
- for x in list: ejecuta las líneas con sangría una vez por elemento.
- range(a, b) se detiene antes de b; range(n) va de 0 a n - 1.
- Un acumulador empieza antes del bucle y crece dentro de él.
- while repite mientras una condición sea True; algo debe cambiarla.
- break sale del bucle de inmediato.
Fuentes de este curso (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Fecha de consulta: 2026-10-19