Решение задач на Python: практикум для девятого класса

Раздел: ОГЭ/ЕГЭ/олимпиады -> Подготовка к экзаменам

Разбор типовых задач Python для 9 класса

Задачи по программированию на Python в 9 классе часто проверяют умение работать с циклами, условиями, списками и строками. Ниже приведены несколько распространенных заданий с вариантами решений.

Как проверить, является ли число простым, за минимальное количество операций?

Наиболее эффективный способ - проверить делители от 2 до корня из числа. Если ни один делитель не найден, число простое.

import math

def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(math.isqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

# Пример использования
print(is_prime(17))  # True
print(is_prime(1))   # False

яндекс задания python (задания от яндекса по python)

Пояснение: функция math.isqrt возвращает целый квадратный корень. Перебираем только до этого значения, что сокращает время для больших чисел.

Как проверить простоту с помощью цикла for и else?

В Python можно использовать блок else после for, который выполняется, если цикл не был прерван break.

def is_prime_v2(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            print('Найден делитель', i)
            break
    else:
        return True
    return False

print(is_prime_v2(29))  # True

Python разработчик тестовые задания (примеры тестовых заданий python)

Этот вариант более наглядный, но менее эффективен из-за использования n**0.5 с плавающей точкой.

Как найти все простые числа до заданного N быстрее?

Для нахождения всех простых чисел до N используется решето Эратосфена.

def sieve_of_eratosthenes(n):
    is_prime = [True] * (n + 1)
    is_prime[0] = is_prime[1] = False
    for i in range(2, int(n**0.5) + 1):
        if is_prime[i]:
            for j in range(i*i, n+1, i):
                is_prime[j] = False
    return [i for i, prime in enumerate(is_prime) if prime]

print(sieve_of_eratosthenes(30))  # [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

егэ python задачи (задачи егэ по python)

Этот метод особенно полезен при решении задач, где требуется список простых чисел для дальнейших операций.

Какие ошибки возникают при проверке простоты?

  • Ввод отрицательных чисел и единицы - они не являются простыми, программа должна это учитывать.
  • Неверный диапазон делителей - если проверять до самого числа, время резко возрастает.
  • Использование float при извлечении корня - может привести к неточности для больших чисел (лучше применять math.isqrt).

Как посчитать, сколько раз каждый символ встречается в строке?

Самый простой и быстрый способ - использовать словарь. Проходим по строке и увеличиваем счетчик.

def char_frequency(s):
    freq = {}
    for ch in s:
        freq[ch] = freq.get(ch, 0) + 1
    return freq

text = 'hello world'
result = char_frequency(text)
print(result)
# {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}

программы python егэ (программы для егэ по python)

Метод get возвращает текущее значение или 0, если ключа нет.

Как воспользоваться встроенным счетчиком из collections?

from collections import Counter

text = 'hello world'
counter = Counter(text)
print(counter)
# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

решу егэ python (решение заданий егэ по python)

Counter - это подкласс словаря, специально предназначенный для подсчета.

Как учесть только буквы без учета регистра?

Преобразуем строку к нижнему регистру и проверяем, является ли символ буквой.

import string

def char_frequency_letters(s):
    s = s.lower()
    freq = {}
    for ch in s:
        if ch in string.ascii_lowercase:
            freq[ch] = freq.get(ch, 0) + 1
    return freq

print(char_frequency_letters('Hello, World!'))
# {'h': 1, 'e': 1, 'l': 3, 'o': 2, 'w': 1, 'r': 1, 'd': 1}

Типичные проблемы при подсчете символов

  • Разделение пробелов и знаков препинания - если нужны только буквы, необходимо фильтровать.
  • Учет регистра - по умолчанию 'A' и 'a' считаются разными символами.
  • Память при больших строках - словарь растет пропорционально числу уникальных символов.
- задачи python 9 класс (задачи по python для 9 класса)
- олимпиады python задачи (олимпиадные задачи по python)
- егэ информатика 19 задание python (19 задание егэ по информатике на python)

Расширенные примеры с нестандартными подходами

Генерация всех перестановок строки с помощью itertools

Пример
import itertools

def all_permutations(s):
    return [''.join(p) for p in itertools.permutations(s)]

print(all_permutations('ABC'))
# ['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']
Результат:
['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']

Проверка сбалансированности скобок с помощью стека

Пример
def is_balanced(expr):
    stack = []
    pairs = {')': '(', '}': '{', ']': '['}
    for ch in expr:
        if ch in pairs.values():
            stack.append(ch)
        elif ch in pairs:
            if not stack or stack.pop() != pairs[ch]:
                return False
    return not stack

tests = ['()', '({[]})', '({)}', '((())']
for t in tests:
    print(f'{t:10} -> {is_balanced(t)}')
()         -> True
({[]})     -> True
({)}       -> False
((())      -> False

Нахождение НОД с помощью алгоритма Евклида

Пример
def gcd(a, b):
    while b:
        a, b = b, a % b
    return a

print(gcd(48, 18))  # 6
print(gcd(100, 25)) # 25
6
25

Сортировка списка строк по длине с помощью лямбда-функции

Пример
words = ['apple', 'kiwi', 'banana', 'pear', 'grape']
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)
# ['kiwi', 'pear', 'apple', 'grape', 'banana']
['kiwi', 'pear', 'apple', 'grape', 'banana']

Задачи по Python для 9 класса - comments

En
задачи python 9 класс (python)