Python · основы≈ 4 мин чтенияБесплатно

range в Python: начало, конец, шаг и ошибки ввода

Правая граница range не входит в цикл, отрицательный шаг идёт назад, а input() читает текст. Измените начало, конец и шаг в наглядной модели, проследите за суммой и проверьте себя на шести задачах.

Сразу к самопроверке
Ввод → вычисление → результат
Ввод → вычисление → результат · от схемы к решению
ШАГ 01

Одна задача — три шага

Пусть ученик вводит количество тетрадей, а программа считает стоимость по 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)
x · текущее числоещё нет
s · накопленная суммаещё нет
Вывод программыпока пусто
Программа ещё не запущена.

Первый шаг создаст переменную s со значением 0.

Если пройти все шаги вручную

Сумма s: 0 → 1 → 3 → 6 → 10. В range(1, 5) входят 1, 2, 3, 4. После цикла print(s) выведет 10 один раз.

Открыть Python онлайн
ШАГ 02

Зачем здесь 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()).

ШАГ 03

Как устроен 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)
Шаг 11Шаг 22Шаг 33Шаг 44Шаг 55
total = 0 перед циклом; на каждом шаге total += x.
Шагxtotal доtotal после
1101
2213
3336
44610
551015

Результат: 5 значений, сумма — 15. Число 6 в последовательность не попало.

↓ Скачать программу Python
ШАГ 04

Шаг 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).

ШАГ 05

Четыре ошибки, которые легко проверить

  • ValueError: в int() попало не целое число. Проверь ввод: 3 подходит, «три» и 3.5 — нет.
  • IndentationError: проверь отступы. После for следующая строка с действием должна быть сдвинута вправо.
  • Неверная сумма: счётчик обнуляется внутри цикла. Поставь total = 0 перед циклом.
  • Не хватает последнего числа: проверь правую границу range. До n включительно — n + 1.

Не исправляй код наугад: выбери n = 3, выпиши значения x и total после каждого шага, сравни их с программой.

ШАГ 06

Следующий маленький шаг

Измени программу: сложи только чётные числа от 1 до n. Внутри цикла перед сложением добавь проверку if x % 2 == 0: и ещё один отступ у сложения. При n = 6 ответ 12: это 2 + 4 + 6.

Сначала предскажи результат для n = 5, затем запусти. Официальные пояснения: input(), range().

ШАГ 07

Следующий шаг: примените приём

Сумма и количество в 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

Закрепить тему

Примени изученный приём на новой задаче.

Решить задачу
Ещё по теме и поделиться
Поделиться: Telegram ВКонтакте
ВАШ ПРЕПОДАВАТЕЛЬНикита Саралашвили

Разберёмся вместе

ОГЭ, ЕГЭ и программирование — от первого вопроса до уверенного решения.

Загружаем стоимость занятий…

Обсудим вашу цель?

Напишите, к чему готовитесь и с чем нужна помощь.

Все условия занятий