range в Python: начало, конец, шаг и ошибки ввода
Правая граница range не входит в цикл, отрицательный шаг идёт назад, а input() читает текст. Измените начало, конец и шаг в наглядной модели, проследите за суммой и проверьте себя на шести задачах.
Сразу к самопроверкеОдна задача — три шага
Пусть ученик вводит количество тетрадей, а программа считает стоимость по 40 рублей за штуку. Сначала читаем данные, затем считаем, потом выводим ответ. Переменная — имя, под которым программа хранит значение.
n = int(input())
price = n * 40
print(price)Ввод 3 → n = 3 → 3 × 40 → вывод 120. Открой Python онлайн, вставь код и впиши 3 в «Данные для input()». Затем проверь 1 и 0: должны получиться 40 и 0.
Что происходит между строками кода?
Учебный пример: складываем 1 + 2 + 3 + 4. Сначала предположите ответ, затем двигайтесь по одной команде. Подсвечена следующая выполняемая строка.
s = 0for x in range(1, 5): s += xprint(s)Первый шаг создаст переменную s со значением 0.
Если пройти все шаги вручную
Сумма s: 0 → 1 → 3 → 6 → 10. В range(1, 5) входят 1, 2, 3, 4. После цикла print(s) выведет 10 один раз.
Зачем здесь int(), а где он не нужен
input() возвращает текст. Поэтому input() + input() при двух строках 3 и 5 даст текст 35. Чтобы сложить числа, преобразуй каждое введённое значение:
a = int(input())
b = int(input())
print(a + b)Результат — 8. int() нужен именно для преобразования строки в целое число. Не оборачивай в него каждое выражение: x > 5 уже возвращает логический результат, его можно сразу использовать в if. Для дробного ввода вроде 2.5 используется float(input()).
Как устроен range
range(1, 6) выдаёт числа 1, 2, 3, 4, 5. Правая граница 6 не входит. Если нужен перебор от 1 до введённого n включительно, пиши range(1, n + 1).
n = int(input())
total = 0
for x in range(1, n + 1):
total += x
print(total)При n = 4 сумма меняется так: 0 → 1 → 3 → 6 → 10. Строка с отступом выполняется для каждого x; print без отступа — один раз после цикла. Запись total += x означает total = total + x.
ПОСМОТРИТЕ, КАК МЕНЯЕТСЯ РЕЗУЛЬТАТ
range: граница, шаг и сумма
Правая граница не входит в range. Посмотрите, какие значения получит x и как накопится сумма.
Здесь показана пошаговая модель примера. Для запуска собственного кода откройте Python онлайн.
range(1, 6, 1)| Шаг | x | total до | total после |
|---|---|---|---|
| 1 | 1 | 0 | 1 |
| 2 | 2 | 1 | 3 |
| 3 | 3 | 3 | 6 |
| 4 | 4 | 6 | 10 |
| 5 | 5 | 10 | 15 |
Результат: 5 значений, сумма — 15. Число 6 в последовательность не попало.
↓ Скачать программу PythonШаг range: чётные числа, обратный отсчёт и пустой цикл
Третий аргумент range — шаг. range(2, 9, 2) даёт 2, 4, 6, 8: начинаем с 2 и прибавляем 2, не достигая правой границы 9.
print(list(range(2, 9, 2))) # [2, 4, 6, 8]
print(list(range(5, 0, -1))) # [5, 4, 3, 2, 1]
print(list(range(5, 0))) # []В обратном отсчёте шаг −1 уменьшает число, пока оно больше 0. Если написать range(5, 0), шаг по умолчанию +1: до меньшей границы с таким направлением не дойти, поэтому цикл пустой. Это не ошибка выполнения; действий внутри цикла просто не будет.
range(1, 6, 0) вызовет ValueError: нулевой шаг недопустим. Для n повторений удобно range(n), его значения от 0 до n − 1 при положительном n. А чтобы перечислить числа от 1 до n включительно, нужен range(1, n + 1).
Четыре ошибки, которые легко проверить
- ValueError: в
int()попало не целое число. Проверь ввод: 3 подходит, «три» и 3.5 — нет. - IndentationError: проверь отступы. После
forследующая строка с действием должна быть сдвинута вправо. - Неверная сумма: счётчик обнуляется внутри цикла. Поставь
total = 0перед циклом. - Не хватает последнего числа: проверь правую границу range. До n включительно — n + 1.
Не исправляй код наугад: выбери n = 3, выпиши значения x и total после каждого шага, сравни их с программой.
Следующий маленький шаг
Измени программу: сложи только чётные числа от 1 до n. Внутри цикла перед сложением добавь проверку if x % 2 == 0: и ещё один отступ у сложения. При n = 6 ответ 12: это 2 + 4 + 6.
Сначала предскажи результат для n = 5, затем запусти. Официальные пояснения: input(), range().
Следующий шаг: примените приём
Сумма и количество в Python: циклы и задачи для подготовки к ОГЭ →
Проверьте себя
Сначала решите самостоятельно. Затем проверьте ответ или откройте объяснение.
Ответ и объяснение
5. Это 2, 3, 4, 5, 6; число 7 не входит.
Ответ и объяснение
15. 1 + 2 + 3 + 4 + 5 = 15.
Ответ и объяснение
20. 2 + 4 + 6 + 8 = 20.
Ответ и объяснение
5. 5, 4, 3, 2, 1. Правая граница 0 не входит.
Ответ и объяснение
0. Шаг по умолчанию +1. При начале 5 и конце 0 range пустой.
Ответ и объяснение
20. 2 + 4 + 6 + 8 = 20. Число 9 не входит.
break и continue: в чём разница
break завершает цикл, continue пропускает только текущую итерацию. Видеопример Никиты Саралашвили — 1 мин 43 с.
Открыть видео во ВКонтакте ↗ Telegram