Практикум по программированию на Python для школьников
Разбор задачи: подсчет четных чисел в списке
Как подсчитать количество четных элементов в списке?
Основное решение с циклом for
Пояснение:
Создаем список чисел. Инициализируем счетчик нулем. Проходим по каждому элементу списка, проверяем, делится ли он на 2 без остатка. Если да, увеличиваем счетчик. После завершения цикла выводим результат.
numbers = [1, 4, 7, 8, 10, 13]
count = 0
for num in numbers:
if num % 2 == 0:
count += 1
print('Количество четных:', count)алгоритм решения задачи python (алгоритм решения задачи на python)
Количество четных: 3
базовые задачи python (базовые задачи python)
Этот подход наглядно демонстрирует работу цикла и условного оператора. Подходит для начального изучения.
Вариант с циклом while
Как реализовать подсчет с помощью while?
Используем индекс для доступа к элементам. Важно правильно задать условие завершения, чтобы не выйти за границы списка.
numbers = [1, 4, 7, 8, 10, 13]
count = 0
i = 0
while i < len(numbers):
if numbers[i] % 2 == 0:
count += 1
i += 1
print('Количество четных:', count)
задачи для обучения python (задачи для обучения python)
Количество четных: 3
задачи на классы в python (задачи на классы в python)
Цикл while требует ручного управления счетчиком, что повышает риск бесконечного цикла при забытии инкремента.
Вариант с list comprehension и sum
Как использовать генератор списков для подсчета?
Создаем список из единиц для каждого четного числа, затем суммируем их с помощью sum().
numbers = [1, 4, 7, 8, 10, 13]
count = sum(1 for num in numbers if num % 2 == 0)
print('Количество четных:', count)множество python задачи (задачи на множества в python)
Количество четных: 3
задачи на модули python (задачи на модули в python)
Этот способ лаконичен и часто используется в реальном программировании, но может быть менее понятен новичкам.
Вариант с filter и len
Как применить встроенную функцию filter?
Функция filter() возвращает итератор из элементов, удовлетворяющих условию. Преобразуем его в список и берем длину.
numbers = [1, 4, 7, 8, 10, 13]
count = len(list(filter(lambda x: x % 2 == 0, numbers)))
print('Количество четных:', count)задачи на операторы в python (задачи на операторы в python)
Количество четных: 3
Этот вариант знакомит с анонимными функциями и функциональным стилем, но для 8 класса может быть сложноват.
Типичные ошибки и их исправление
- Забыли инициализировать счетчик: Если не задать count = 0, возникнет ошибка NameError при попытке увеличить переменную. Всегда устанавливайте начальное значение.
- Неправильное условие четности: Начинающие пишут if num % 2 == 1, что проверяет нечетность. Для четных остаток равен 0.
- Выход за границы списка в while: Условие while i <= len(numbers) вызовет ошибку индекса. Нужно i < len(numbers).
- Забыли увеличить индекс в while: Если не написать i += 1, цикл станет бесконечным. Всегда проверяйте обновление счетчика.
- Пустой список: Любой из вариантов корректно обработает пустой список (счетчик останется 0), но если ожидается ввод от пользователя, следует добавить проверку.
В целом, выбор варианта зависит от уровня подготовки и целей. Для обучения лучше начать с цикла for, постепенно переходя к более кратким решениям.
Дополнительные примеры задач для 8 класса
Задача 1: Сумма чисел от 1 до N
Вычислить сумму всех натуральных чисел от 1 до заданного N.
N = 10
total = 0
for i in range(1, N+1):
total += i
print('Сумма от 1 до', N, 'равна', total)
Сумма от 1 до 10 равна 55
Также можно использовать формулу арифметической прогрессии: total = N*(N+1)//2. Это эффективнее, но для понимания цикла полезно оба способа.
Задача 2: Проверка строки на палиндром
Определить, является ли строка палиндромом (читается одинаково слева направо и справа налево).
s = 'racecar'
is_palindrome = True
for i in range(len(s)//2):
if s[i] != s[-i-1]:
is_palindrome = False
break
print('Строка', s, 'палиндром?', is_palindrome)
Строка racecar палиндром? True
Альтернатива: is_palindrome = s == s[::-1]. Первый вариант учит работе с индексами.
Задача 3: Факториал числа
Вычислить факториал неотрицательного целого числа N (N!).
N = 5
factorial = 1
for i in range(2, N+1):
factorial *= i
print('Факториал', N, '=', factorial)
Факториал 5 = 120
При N=0 факториал равен 1. Цикл от 2 обеспечивает корректную работу для N=0 (цикл не выполняется) и для N=1 (цикл не выполняется).