Повторение с for и while
range(5) даёт 0, 1, 2, 3 и 4: пять чисел, среди которых нет 5.
Запусти цикл из трёх строк и проследи рост total
Скопируй эту программу в IDLE и запусти до чтения объяснения. Затем замени список своими числами и запусти ещё раз.
total = 0
for n in [3, 5, 2]:
total = total + n
print(n, total)
print("done", total)3 3
5 8
2 10
done 10Строка for берёт элементы списка по одному. На каждом проходе переменная n ссылается на очередной элемент, а строки с отступом выполняются один раз с этим значением. Один такой проход называют итерацией. После последнего элемента Python переходит к первой строке без отступа, поэтому "done" выводится один раз, в конце. Таблица трассировки помогает увидеть порядок действий.
| Проход | n | total после прохода | Вывод |
|---|---|---|---|
| (до) | 0 | ||
| 1 | 3 | 3 | 3 3 |
| 2 | 5 | 8 | 5 8 |
| 3 | 2 | 10 | 2 10 |
| (после) | 10 | done 10 |
Переменную total называют накопителем: до цикла она равна 0, а на каждом проходе что-то накапливает. Строка total = total + n настолько распространена, что для неё есть сокращение total += n. Подсчёт количества работает так же с count += 1.
range() создаёт числа за тебя
Чтобы повторить действие заданное число раз, используй цикл по range(). range(5) даёт 0, 1, 2, 3, 4: начинается с 0 и заканчивается перед 5, как срез. range(1, 6) даёт числа от 1 до 5. Третье число задаёт шаг, поэтому range(0, 10, 2) даёт чётные числа от 0 до 8. Таблица умножения на 7, которую каждый корейский школьник учит во втором классе, записывается циклом в две строки.
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 = 63Цикл for может обходить и символы строки, поэтому с ним легко считать буквы.
count = 0
for ch in "banana":
if ch == "a":
count += 1
print(count)3while повторяется, пока условие равно True
У цикла while нет списка для обхода. Он проверяет условие, выполняет строки с отступом, если оно равно True, и снова проверяет, раз за разом. Это удобно, когда число проходов заранее неизвестно, например «продолжай копить до 50 000 вон». Что-то внутри цикла должно менять условие, иначе цикл не закончится. Если это произошло, останови программу клавишами Ctrl+C.
saved = 0
weeks = 0
while saved < 50000:
saved += 12000
weeks += 1
print(weeks, saved)5 60000break немедленно выходит из цикла, даже посередине. Это удобно при поиске: можно остановиться, как только найдено нужное. Цикл ниже останавливается на первой оценке меньше 60 и даже не проверяет 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 ... | Выполняет строки с отступом один раз для каждого элемента |
| range(a, b) | Целые числа от a до b, не включая b |
| while | Повторяется, пока условие равно True |
| накопитель | Переменная, накапливающая сумму за несколько проходов |
| += | total += n — сокращённая запись total = total + n |
| break | Немедленно выходит из цикла |
- Что выведет этот код?
for i in range(3): print(i)0
1
21
2
30
1
2
33
- Что выведет этот код?
total = 0 for n in range(1, 5): total += n print(total) - Что выведет этот код?
print(list(range(0, 10, 3))) - Что выведет этот код?
total = 0 for n in [1, 2, 3]: total += n print(total)61
3
61
2
30
1
3
- Что выведет этот код?
count = 0 for ch in "seoul": if ch in "aeiou": count += 1 print(count) - Что выведет этот код?
n = 1 while n < 20: n = n * 2 print(n) - Что выведет этот код?
for s in [5, 8, 3, 9]: if s > 6: print(s) break - Сколько раз этот код выведет hi?
for i in range(2, 8): print("hi") - Что выведет этот код?
word = "" for ch in "abc": word = ch + word print(word) - Расположи строки по порядку, чтобы программа вывела сумму чисел от 1 до 100.Вывод
5050
- «range(1, 10) доходит до 10». Он заканчивается перед 10, поэтому последнее значение 9. Для чисел от 1 до 10 напиши range(1, 11).
- «С моим циклом while всё в порядке, просто он долго работает». Если внутри цикла ничто не меняет условие, он не остановится. Проверь, что переменная из условия обновляется на каждом проходе, и нажми Ctrl+C, чтобы прервать бесконечный цикл.
- «Нет разницы, поставить print внутри цикла или снаружи». С отступом внутри for он выполняется на каждом проходе; у левого края один раз после цикла. Реши, нужны ли тебе все шаги или только итоговый ответ.
- for x in list: выполняет строки с отступом один раз для каждого элемента.
- range(a, b) заканчивается перед b; range(n) даёт от 0 до n - 1.
- Накопитель создаётся до цикла и растёт внутри него.
- while повторяется, пока условие равно True; что-то должно менять его.
- break сразу выходит из цикла.
Источники курса (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)
Проверено: 2026-10-19