Программирование циклов на Python - Урок информатики для 8 класса
💻 Информатика 8 класс

Программирование циклов на Python

Привет! Представь: тебе нужно отправить поздравление 50 друзьям. Можно копировать текст 50 раз руками. А можно написать программу, которая сделает это за секунду. Сегодня мы научимся заставлять компьютер делать рутинную работу за нас!

Циклы — это когда компьютер делает скучную работу, а ты отдыхаешь

Циклы — это когда компьютер делает скучную работу, а ты отдыхаешь

Что такое цикл?

Оператор цикла — это команда в программе, которая говорит: «Повторяй эти действия, пока я не скажу стоп».

💡 Зачем нужны циклы?

Циклы экономят время и код. Вместо того чтобы писать одну и ту же команду 100 раз, мы пишем цикл — и компьютер сам повторит её столько, сколько нужно.

🎮 Пример из жизни

Качаешь персонажа в игре? Каждый день одни и те же действия: зашёл, выполнил квест, получил награду. Программисты игр используют циклы, чтобы автоматизировать повторяющиеся события!

🔄 В Python два основных цикла

  • while (цикл-ПОКА) — повторяем, пока условие истинно
  • for (цикл-ДЛЯ) — повторяем известное количество раз

📌 Когда что использовать?

  • for — когда знаем количество повторений
  • while — когда не знаем или проверяем условие

1️⃣ Цикл WHILE — повторяем, пока условие верно

Сейчас мы узнаем, как заставить программу повторять действия, пока выполняется какое-то условие.

Цикл while: бежим, пока не достигнем цели

Цикл while: бежим, пока не достигнем цели

🔍 Синтаксис цикла while

while условие:
    # действия, которые повторяются
    # пока условие истинно

Пока условие = True, программа крутит цикл. Как только условие становится False — цикл останавливается.

📝 Пример 1: Рисуем круги

Нарисуем ряд кругов с помощью библиотеки turtle:

import turtle

x = 20
while x <= 620:
    turtle.penup()
    turtle.goto(x, 0)
    turtle.pendown()
    turtle.circle(20)
    x = x + 40

turtle.done()

Что происходит? Начинаем с x = 20. Пока x ≤ 620, рисуем круг и сдвигаемся на 40 пикселей вправо. Когда x станет больше 620 — стоп!

💡 Попробуй сам: Измени радиус на 30 или сделай вертикальный ряд кругов!

📝 Пример 2: Алгоритм Евклида (НОД)

Найдём наибольший общий делитель двух чисел — это как найти самую большую общую часть двух Lego-конструкций:

x = int(input('Введите первое число: '))
y = int(input('Введите второе число: '))

while x != y:
    if x > y:
        x = x - y
    else:
        y = y - x

nod = x
print(f'НОД = {nod}')

Логика: Вычитаем меньшее из большего, пока числа не станут равны. Это и есть НОД!

🎯 Проверь: НОД(123, 12) = ? НОД(450, 180) = ? НОД(500, 125) = ?

📝 Пример 3: Деление без деления

Как поделить числа, используя только вычитание? Как в начальной школе: сколько раз вычтем делитель из делимого!

x = int(input('Введите делимое: '))
y = int(input('Введите делитель: '))

r = x  # остаток
q = 0  # частное

while r >= y:
    r = r - y
    q = q + 1

print(f'Частное: {q}')
print(f'Остаток: {r}')

Пример: 25 ÷ 4 = 6 (остаток 1)

📝 Пример 4: Считаем числа, оканчивающиеся на 3

Программа для обработки списка чисел (сколько их — неизвестно, ноль = конец ввода):

count = 0
print('Вводите числа (0 для завершения)')

a = int(input('Число: '))

while a != 0:
    if a % 10 == 3:  # последняя цифра = 3?
        count = count + 1
    a = int(input('Следующее число (или 0): '))

print(f'Чисел, оканчивающихся на 3: {count}')

💡 Попробуй: Измени программу так, чтобы считать числа, кратные 3 (делящиеся на 3 без остатка).

🔄 Цикл WHILE с командой break

Иногда удобнее проверять условие ПОСЛЕ выполнения действий. Для этого используем бесконечный цикл с выходом через break.

Делаем шаг, потом проверяем — пора ли остановиться

Делаем шаг, потом проверяем — пора ли остановиться

🔍 Синтаксис

while True:
    # действия
    if условие_выхода:
        break  # выходим из цикла

📝 Пример 5: Концентрические окружности

Рисуем круги от большого к маленькому:

import turtle

r = 200

while True:
    turtle.circle(r)
    r = r - 5
    if r < 10:
        break

turtle.done()

📝 Пример 6: Считаем цифры в числе

Сколько цифр в числе 12345? Будем «откусывать» по одной справа:

n = int(input('Введите число: '))
count = 0

while True:
    n = n // 10  # убираем последнюю цифру
    count = count + 1
    if n == 0:
        break

print(f'Количество цифр: {count}')

Как работает //? Это целочисленное деление. 12345 // 10 = 1234 (откусили цифру 5).

💡 Усложни задачу: Попробуй посчитать ещё и сумму цифр числа!

📝 Пример 7: График тренировок

Спортсмен бежит каждый день на 10% больше. Когда он пробежит 25 км?

x = 10.0  # начальная дистанция
day = 1

while True:
    x = x * 1.1  # +10%
    day = day + 1
    if x >= 25:
        break

print(f'С {day}-го дня спортсмен пробежит 25 км')

2️⃣ Цикл FOR — когда знаем, сколько раз повторять

Сейчас мы узнаем самый удобный цикл — когда точно знаем количество повторений.

Цикл for: когда знаешь, сколько раз повторить

Цикл for: когда знаешь, сколько раз повторить

🔍 Синтаксис цикла for

for i in range(start, stop):
    # действия повторяются от start до stop-1

Важно: range(1, 5) даст числа 1, 2, 3, 4 (без 5!).

📊 Примеры range()

  • range(5) → 0, 1, 2, 3, 4
  • range(1, 6) → 1, 2, 3, 4, 5
  • range(0, 10, 2) → 0, 2, 4, 6, 8
  • range(10, 0, -1) → 10, 9, 8...1

💡 Совет

Цикл for — это твой лучший друг, когда нужно:

  • Повторить действие N раз
  • Перебрать элементы списка
  • Пройтись по строке

📝 Пример 8: 100 случайных кругов

import turtle
import random

for i in range(100):
    x = random.randint(0, 640)
    y = random.randint(0, 480)
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()
    turtle.circle(10)

turtle.done()

Каждый круг — в случайном месте! Как конфетти 🎉

📝 Пример 9: Находим все делители числа

n = int(input('Введите число: '))
print(f'Делители числа {n}:')

for i in range(1, n + 1):
    if n % i == 0:
        print(i)

Что такое делитель? Число, на которое n делится без остатка. У 12 делители: 1, 2, 3, 4, 6, 12.

💡 Усложни: Подсчитай количество делителей. Если их ровно 2 — число простое!

📝 Пример 10: Возведение в степень

Вычислим an без функции pow():

a = float(input('Введите основание: '))
n = int(input('Введите показатель: '))

result = 1
for i in range(n):
    result = result * a

print(f'{a} в степени {n} = {result}')

Логика: 2³ = 2 × 2 × 2. Умножаем 3 раза!

📝 Пример 11: Обработка последовательности

Подсчитаем, сколько чисел делятся на 3:

n = int(input('Сколько чисел введёте? '))
count = 0

for i in range(n):
    a = int(input(f'Число #{i+1}: '))
    if a % 3 == 0:
        count = count + 1

print(f'Чисел, кратных 3: {count}')

📝 Пример 12: Считаем буквы в строке

text = input('Введите строку: ')
count = 0

for letter in text:
    if letter == 's':
        count = count + 1

print(f'Букв "s" в строке: {count}')

💡 Усложни: Посчитай, каких букв больше — "s" или "t"?

3️⃣ Вложенные циклы — цикл внутри цикла!

Сейчас мы узнаем, как создавать сложные повторяющиеся структуры — типа таблицы умножения или шахматной доски.

Вложенные циклы: цикл внутри цикла, как матрёшки

Вложенные циклы: цикл внутри цикла, как матрёшки

💡 Что такое вложенные циклы?

Вложенный цикл — это цикл внутри другого цикла. Внешний цикл повторяет внутренний!

Представь матрёшек: большая содержит среднюю, средняя — маленькую. Так же работают вложенные циклы.

📝 Пример 13: Прямоугольник из звёздочек

Выведем 5 строк по 10 звёздочек:

for i in range(5):  # внешний цикл: 5 строк
    for j in range(10):  # внутренний: 10 звёздочек
        print('*', end='')
    print()  # переход на новую строку

Результат:

**********
**********
**********
**********
**********

📝 Пример 14: Сетка из кругов

import turtle

y = 10

for i in range(5):  # 5 рядов
    x = 10
    for j in range(8):  # 8 кругов в ряду
        turtle.penup()
        turtle.goto(x, y)
        turtle.pendown()
        turtle.circle(10)
        x = x + 20
    y = y + 20

turtle.done()

Получится сетка 5×8 кругов!

🎯 Как это работает?

  1. Внешний цикл (i) выполняется 5 раз → 5 рядов
  2. На каждой итерации внешнего цикла внутренний цикл (j) выполняется 8 раз → 8 кругов
  3. Итого: 5 × 8 = 40 кругов!

🚀 Бонус: Крутые трюки с циклами

🎯 Трюк 1: Обратный отсчёт

for i in range(10, 0, -1):
    print(i)
print('Пуск! 🚀')

range(10, 0, -1) идёт от 10 до 1 с шагом -1!

✨ Трюк 2: Перебор строки

word = 'Python'
for letter in word:
    print(letter)

Можно перебирать не только числа, но и символы строки!

🔢 Трюк 3: Enumerate для нумерации

fruits = ['яблоко', 'банан', 'киви']

for i, fruit in enumerate(fruits, start=1):
    print(f'{i}. {fruit}')

Результат:

1. яблоко
2. банан
3. киви

📌 Самое главное

Выжимка всего, что мы узнали о циклах:

Циклы экономят время и код — вместо копипаста одной команды 100 раз, пишем цикл
while — используем, когда НЕ знаем точное количество повторений
for — используем, когда ЗНАЕМ количество повторений (самый популярный!)
Вложенные циклы — цикл внутри цикла, нужны для таблиц и сеток
break — команда для аварийного выхода из цикла

🎯 Проверь себя

Проверь, насколько хорошо ты разобрался в циклах!

Задача 1: Угадай результат

Что выведет этот код?

x = 1
y = 0

while x < 5:
    y = y + x
    x = x + 1

print(x, y)

💡 Подсказка: Отслеживай значения x и y на каждой итерации!

Задача 2: Найди ошибку в факториале

Программист хотел вычислить факториал (5! = 1×2×3×4×5), но ошибся:

n = int(input('Введите n: '))
f = 0

for i in range(1, n):
    f = f * i

print(f)

Что не так? Исправь код!

Задача 3: Бесконечный цикл?
a = 1
b = 2

while a < b:
    c = a + b

Что произойдёт при запуске? Почему?

Задача 4: Найди максимум

Напиши программу, которая:

  • Вводит целые числа до тех пор, пока не введут 0
  • Находит максимальное (наибольшее) из введённых чисел
  • Использует цикл while
Задача 5: Таблица умножения

Напиши программу, которая выводит таблицу умножения на n (от 1 до 10):

Введите n: 5
5 × 1 = 5
5 × 2 = 10
...
5 × 10 = 50
Задача 6: Шахматная доска

Используй вложенные циклы, чтобы нарисовать шахматную доску 8×8 из символов * и пробелов:

* * * *
 * * * *
* * * *
 * * * *
* * * *
 * * * *
* * * *
 * * * *
Задача 7: Сумма квадратов

Напиши программу, вычисляющую сумму квадратов первых n чисел:

1² + 2² + 3² + ... + n²

Задача 8: Степени двойки

Выведи таблицу степеней двойки от 2⁰ до 2¹⁰ в формате:

0 → 1
1 → 2
2 → 4
...
10 → 1024
Задача 9: Логическая загадка

Какой из трёх циклов (while, for, или цикл с break) самый универсальный? То есть таким, которым можно заменить два других?

Обсуди с друзьями!

Задача 10: Реальная задача про плитки

После ремонта осталось несколько плиток. Если укладывать по 8 в ряд — остаётся неполный ряд. Если по 9 — тоже неполный ряд, но в нём на 6 плиток меньше, чем при укладке по 8.

Напиши программу, которая найдёт, сколько всего плиток!

Задача 11: Сколько раз выполнится цикл?

Определи, сколько раз выполнится тело цикла:

  • for i in range(0, 15): ...
  • for i in range(10, 15): ...
  • for i in range(-1, 2): ...
  • for i in range(10, 10): ...
Задача 12: Твоё имя 10 раз

Напиши программу, которая 10 раз выводит на экран твои имя и фамилию.

💪 Практические задания

Попробуй применить полученные знания на практике!

✍️ Задание 1: Вывод имени

Создай программу, которая спрашивает у пользователя его имя и выводит приветствие 5 раз.

Какой цикл лучше использовать — while или for?

🔢 Задание 2: Чётные числа

Напиши программу, которая выводит все чётные числа от 1 до 50.

Подсказка: используй range() с шагом 2!

🎲 Задание 3: Угадай число

Компьютер загадывает число от 1 до 10. Пользователь пытается угадать. Программа продолжает работу, пока число не угадано.

Используй random.randint() и цикл while!

⭐ Задание 4: Треугольник из звёзд

Выведи треугольник:

*
**
***
****
*****

Подсказка: используй вложенные циклы!

Теперь ты знаешь, как заставить компьютер работать за тебя!

Теперь ты знаешь, как заставить компьютер работать за тебя!

🚀 Поздравляю!

Теперь ты знаешь, как заставить компьютер делать рутинную работу за тебя. Циклы — это суперсила программиста! 💪

Помни: практика — наше всё. Чем больше программ напишешь, тем легче станет. Удачи в кодинге! 🎉

Информатика — твой билет в цифровое будущее