Введение
Python — один из самых удобных языков для ЕГЭ по информатике: синтаксис короткий, код легко читать, а встроенных средств хватает для большинства типовых вычислений.
Многие задания экзамена можно решить программой полностью или использовать код для проверки рассуждений. Особенно полезны условия, циклы, строки, списки и чтение данных из файлов.
1. Установка Python и выбор среды
Для работы нужен интерпретатор Python 3 и программа, в которой удобно писать и запускать код. Для первых шагов достаточно IDLE, которая устанавливается вместе с Python. PyCharm удобнее для больших файлов и проектов.
- Скачай Python 3 с официального сайта python.org.
- При установке отметь добавление Python в PATH, если такая настройка показана.
- Открой IDLE или создай обычный файл с расширением
.pyв PyCharm. - Введи код, сохрани файл и запусти его. В IDLE для этого обычно используют Run → Run Module или клавишу F5.
Первая программа
Пользователь вводит: Саша
name = input('Как тебя зовут? ')
print('Привет,', name)
Результат:
Привет, Саша
input() читает введённый текст. Если мы хотим ввести число, результат нужно преобразовать в int:
int(input())
print() выводит результат. Код выполняется сверху вниз.
Файл программы. Сохраняй код в файле с расширением
.py, напримерtask.py. Не называй файлmath.py,string.pyили именем другой библиотеки: это может помешать импорту.
2. Переменные и типы данных
Переменная — имя, связанное со значением. Знак = выполняет присваивание: Python вычисляет правую часть и сохраняет результат под именем слева.
score = 80
score = score + 5
name = 'Лена'
print(name, score)
Результат:
Лена 85
Не перепутай:
=присваивает значение, а==сравнивает два значения.
Главные простые типы данных
| Тип | Что хранит | Примеры |
|---|---|---|
int | целые числа | 52, -190, 0 |
float | вещественные числа | 3.14, -0.5 |
str | текст | 'ЕГЭ', '123' |
bool | истина или ложь | True, False |
Коллекции
| Тип | Свойство | Пример |
|---|---|---|
list | изменяемая последовательность | [2, 4, 6] |
tuple | неизменяемая последовательность | (2, 4, 6) |
set | уникальные элементы | {1, 2, 3} |
dict | пары ключ → значение | {'math': 90} |
Правильное создание.
list(2, 4, 6)не работает. Нужен литерал[2, 4, 6]или преобразование другой коллекции:list((2, 4, 6)).
Проверка и преобразование типа
x = '42'
print(type(x))
n = int(x)
print(n + 8)
print(str(n) + ' баллов')
Результат:
<class 'str'>
50
42 баллов
| Функция | Результат |
|---|---|
int('42') | целое число 42 |
float('2.5') | вещественное число 2.5 |
str(42) | строка '42' |
bool(0) | False; большинство ненулевых значений дают True |
Ввод чисел
Результат input() всегда является строкой. Перед вычислениями введённые числа обычно преобразуют.
Если введены числа 5 и 7:
a = int(input())
b = int(input())
print(a + b)
Результат:
12
3. Арифметические операции
| Операция | Знак | Пример | Результат |
|---|---|---|---|
| сложение | + | 7 + 5 | 12 |
| вычитание | - | 7 - 5 | 2 |
| умножение | * | 7 * 5 | 35 |
| обычное деление | / | 7 / 5 | 1.4 |
| целочисленное деление | // | 7 // 5 | 1 |
| остаток от деления | % | 7 % 5 | 2 |
| возведение в степень | ** | 2 ** 5 | 32 |
Про
//. Операция//возвращает результат деления, округлённый вниз. Для положительных чисел это совпадает с отбрасыванием дробной части:7 // 5 == 1.
print(2 + 3 * 4)
print((2 + 3) * 4)
Результат:
14
20
Частное и остаток
Пара // и % часто нужна в задачах на цифры, время и разбиение на группы.
minutes = 137
hours = minutes // 60
rest = minutes % 60
print(hours, rest)
Результат:
2 17
Сокращённое присваивание
x = 5
x += 2 # x = x + 2
x *= 3 # x = x * 3
print(x)
Результат:
21
Операции со строками
Для строк + означает конкатенацию — соединение строк, а * с целым числом повторяет строку.
Вычитать и делить строки нельзя.
print('ЕГ' + 'Э')
print('ха' * 3)
print(4 * '-')
Результат:
ЕГЭ
хахаха
----
Тип определяет результат:
'5' + '7'даёт'57', аint('5') + int('7')даёт12.# 4. Строки и срезы
Строка str — неизменяемая последовательность символов. Символы нумеруются с нуля, а отрицательные индексы считают с конца.
s = 'Информатика'
print(s[0])
print(s[1])
print(s[-1])
print(len(s))
Результат:
И
н
а
11
Граница строки. Допустимы индексы от
0доlen(s) - 1. Обращение кs[len(s)]вызоветIndexError.
Срез
Срез записывается как:
s[start:stop:step]
Начало включается, правая граница stop не включается. Любую часть можно опустить.
| Выражение | Результат | Смысл |
|---|---|---|
s[:4] | 'Инфо' | первые четыре символа |
s[4:8] | 'рмат' | индексы 4, 5, 6, 7 |
s[-4:] | 'тика' | последние четыре символа |
s[::2] | 'Ифраиа' | каждый второй символ |
s[::-1] | 'акитамрофнИ' | строка в обратном порядке |
Строки неизменяемы
Нельзя присвоить новое значение отдельному символу:
s[0] = 'и'
Это вызовет ошибку. Можно собрать новую строку:
s = 'Кот'
s = 'Р' + s[1:]
print(s)
Результат:
Рот
Перебор символов
word = 'ЕГЭ'
for ch in word:
print(ch)
Результат:
Е
Г
Э
5. Булева логика
Сравнение возвращает логическое значение True или False. Из сравнений составляют условия для ветвлений и циклов.
| Проверка | Оператор | Пример |
|---|---|---|
| равно | == | a == b |
| не равно | != | a != b |
| больше / меньше | > / < | a > b |
| не меньше / не больше | >= / <= | a >= b |
| принадлежит | in | 'a' in word |
and, or, not
| Операция | Когда результат True | Пример |
|---|---|---|
A and B | истинны обе части | age >= 14 and age < 18 |
A or B | истинна хотя бы одна часть | x < 0 or x > 100 |
not A | выражение A ложно | not finished |
a = 10
b = 21
ok = True
print(a == b)
print(a != b)
print(a < b and ok)
print(a > b or b > a)
print(not ok)
Результат:
False
True
True
True
False
Порядок вычисления
Сначала выполняется not, затем and, затем or.
В сложных выражениях ставь скобки: так смысл условия виден сразу.
x = 7
print((x % 2 == 1) and (x > 0))
Результат:
True
6. Условный оператор if
Условный оператор выбирает один из вариантов действий. Python проверяет ветки сверху вниз и выполняет первую подходящую.
score = 72
if score >= 80:
print('оценка 5')
elif score >= 60:
print('оценка 4')
else:
print('оценка 3 или 2')
Результат:
оценка 4
| Часть | Назначение |
|---|---|
if | первая обязательная проверка |
elif | дополнительная проверка; веток может быть несколько |
else | действия, если предыдущие условия ложны; условие не пишется |
Логические переменные в условии
Если переменная уже содержит True или False, сравнение с True обычно не нужно.
passed = True
if passed: # вместо passed == True
print('Поздравляю!')
if not passed: # вместо passed == False
print('Попробуй ещё')
Результат:
Поздравляю!
Отступы — часть синтаксиса
После if, elif и else ставится двоеточие. Тело ветки сдвигается вправо обычно на 4 пробела.
Когда отступ закончился, закончился и блок.
x = 5
if x > 0:
print('положительное')
print('эта строка внутри if')
print('эта строка выполнится всегда')
Результат:
положительное
эта строка внутри if
эта строка выполнится всегда
Tab и пробелы. Редактор может превращать Tab в 4 пробела. Главное — не смешивать в одном файле разные виды отступов и сохранять одинаковую глубину блока.
7. Циклы for и while
Цикл while
while повторяет блок, пока условие остаётся истинным. В теле цикла должно меняться значение, от которого зависит условие, иначе цикл может стать бесконечным.
score = 0
while score < 5:
print(score, end=' ')
score += 1
Результат:
0 1 2 3 4
Правая граница. Если условие
score < 5, число5уже не выводится. Чтобы вывести значения от0до100включительно, нужноscore <= 100.
Цикл for
for по очереди берёт элементы последовательности: диапазона, строки, списка, кортежа и других объектов.
for item in [1, 3, 5]:
print(item, end=' ')
Результат:
1 3 5
Функция range
range(start, stop, step) создаёт целочисленный диапазон. Правая граница stop не включается.
| Запись | Значения |
|---|---|
range(5) | 0, 1, 2, 3, 4 |
range(3, 6) | 3, 4, 5 |
range(1, 8, 2) | 1, 3, 5, 7 |
range(5, 0, -1) | 5, 4, 3, 2, 1 |
Накопители
В циклах часто используют сумму, количество, максимум или строку-результат. Начальное значение зависит от задачи.
total = 0
count = 0
for x in [4, -2, 7, 0, 5]:
if x > 0:
total += x
count += 1
print(total, count)
Результат:
16 3
break и continue
break завершает ближайший цикл.
continue сразу переходит к следующему повторению.
for x in [3, -1, 5, 0, 8]:
if x < 0:
continue
if x == 0:
break
print(x, end=' ')
Результат:
3 5
8. Списки и генераторы списков
Список list — изменяемая упорядоченная коллекция. В нём могут храниться значения разных типов, но в экзаменационных задачах чаще встречаются списки чисел или строк.
a = [1, 3, 5]
print(a[0], a[-1])
a[1] = 100
a.append(7)
print(a)
Результат:
1 5
[1, 100, 5, 7]
Сложение и умножение списков
a = [1, 2, 3]
b = [4, 5]
print(a + b)
print(b * 3)
Результат:
[1, 2, 3, 4, 5]
[4, 5, 4, 5, 4, 5]
Перебор списка
nums = [4, 7, 10]
for x in nums:
print(x * 2, end=' ')
Результат:
8 14 20
Генератор списка
Генератор списка создаёт новый список по короткому правилу. Слева пишется значение для добавления, затем цикл, а необязательное условие if фильтрует элементы.
squares = [x * x for x in range(1, 6)]
evens = [x for x in range(20) if x % 2 == 0]
print(squares)
print(evens)
Результат:
[1, 4, 9, 16, 25]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Функция map
map() применяет указанную функцию к каждому элементу последовательности.
Общая запись:
map(функция, последовательность)
Например, input().split() возвращает список строк. С помощью map(int, ...) каждую строку можно преобразовать в целое число.
Если введено:
10 20 30parts = input().split()
nums = list(map(int, parts))
print(nums)
Результат:
[10, 20, 30]
Сама функция map() возвращает не готовый список, а перебираемый объект. Если нужен список, результат оборачивают в list().
Если количество значений известно, их можно сразу записать в переменные:
x, y = map(int, input().split())
print(x + y)
Результат:
12
Важно. В
map()передаётся имя функции без вызова:map(int, parts)— правильно, аmap(int(), parts)— ошибка.
Чтение нескольких чисел
Если введено:
10 20 30nums = [int(x) for x in input().split()]
print(nums)
Результат:
[10, 20, 30]
То же преобразование можно записать генератором списка. Обе записи правильные, но map(int, ...) короче и часто используется при чтении чисел в заданиях ЕГЭ.
9. Функции
Функция — именованный блок команд. Функции убирают повторение, делят программу на понятные части и позволяют отдельно проверять вычисления.
def area(a, b):
result = a * b
return result
print(area(4, 7))
Результат:
28
| Часть | Смысл |
|---|---|
def | начало определения функции |
area | имя функции |
a, b | параметры — входные данные |
return | возвращает результат и завершает функцию |
Функция без return
Если return не указан, функция возвращает специальное значение None. Она всё равно может печатать текст или изменять переданный список.
def hello(name):
print('Привет,', name)
result = hello('Маша')
print(result)
Результат:
Привет, Маша
None
return завершает функцию
def divide(a, b):
if b == 0:
return 'Делить на ноль нельзя'
return a / b
print(divide(4, 2))
print(divide(42, 0))
Результат:
2.0
Делить на ноль нельзя
После выполненного return оставшиеся строки функции уже не запускаются.
Локальные переменные
Переменная, созданная внутри функции, обычно доступна только в этой функции.
def calc(x):
temp = x * 2
return temp + 1
print(calc(5))
Результат:
11
10. Функции и методы строк и списков
Функцию вызывают как len(a), а метод принадлежит объекту и вызывается через точку: a.append(x) или s.split().
Общие встроенные функции
| Функция | Что делает | Пример |
|---|---|---|
len(x) | длина строки или коллекции | len('кот') → 3 |
sum(a) | сумма чисел | sum([2, 3, 4]) → 9 |
min(a) / max(a) | минимум / максимум | max([2, 9, 4]) → 9 |
sorted(a) | новый отсортированный список | sorted([3, 1]) → [1, 3] |
abs(x) | модуль числа | abs(-7) → 7 |
round(x, n) | округление до n знаков | round(3.1415, 2) → 3.14 |
Методы списков
| Метод | Что делает |
|---|---|
a.append(x) | добавляет x в конец |
a.extend(items) | добавляет несколько элементов |
a.insert(i, x) | вставляет x перед индексом i |
a.pop() / a.pop(i) | удаляет и возвращает последний элемент или элемент i |
a.remove(x) | удаляет первое значение x |
a.index(x) | индекс первого значения x |
a.count(x) | количество значений x |
a.sort() | сортирует сам список |
a.reverse() | разворачивает сам список |
a = [3, 1, 2]
b = sorted(a)
a.sort(reverse=True)
print(a)
print(b)
Результат:
[3, 2, 1]
[1, 2, 3]
sortиsorted.a.sort()изменяет исходный список и возвращаетNone.sorted(a)не меняетa, а создаёт новый список.
Основные методы строк
line = '10 20 30'
parts = line.split()
nums = list(map(int, parts))
print(nums)
print('-'.join(parts))
Результат:
[10, 20, 30]
10-20-30
| Метод | Что делает | Пример |
|---|---|---|
.lower() / .upper() | меняет регистр в новой строке | 'Py'.lower() → 'py' |
.strip() | убирает пробелы по краям | ' x '.strip() → 'x' |
.count(x) | считает вхождения | 'мама'.count('м') → 2 |
.replace(a, b) | заменяет фрагменты | '2025'.replace('5', '6') |
.find(x) | индекс первого вхождения или -1 | 'кот'.find('о') → 1 |
.index(x) | индекс вхождения или ошибка | 'кот'.index('о') → 1 |
.split(sep) | разбивает строку и возвращает список | 'a,b'.split(',') |
sep.join(items) | соединяет строки через разделитель | '-'.join(['a', 'b']) |
Строковые методы. Строки неизменяемы. Метод
s.upper()создаёт новую строку, поэтому результат нужно сохранить:s = s.upper().
11. Множества и словари
Множество set
Множество хранит только уникальные элементы. Порядок не гарантирован, индексов нет.
Главное преимущество — быстрая проверка принадлежности.
values = [3, 1, 3, 2, 1]
unique = set(values)
print(len(unique))
print(2 in unique)
Результат:
3
True
Пустое множество.
set()создаёт пустое множество. Запись{}создаёт пустой словарь.
| Операция | Смысл |
|---|---|
s.add(x) | добавить элемент |
s.discard(x) | удалить элемент, если он есть |
a \| b | объединение множеств |
a & b | пересечение множеств |
a - b | элементы a, которых нет в b |
Словарь dict
Словарь хранит пары ключ: значение. Ключи уникальны; по ключу можно получить или изменить значение.
scores = {
'math': 92,
'inf': 100
}
print(scores['inf'])
scores['rus'] = 86
scores['math'] = 95
print(scores.get('phys', 0))
Результат:
100
0
Перебор словаря
for subject, score in scores.items():
print(subject, score)
Результат:
math 95
inf 100
rus 86
Методы keys(), values() и items() возвращают ключи, значения и пары соответственно.
12. Работа с текстовыми файлами
В заданиях с файлами данные обычно лежат рядом с программой. Имя или путь передают функции open() в кавычках.
Безопасное открытие
Конструкция with автоматически закрывает файл после чтения.
with open('data.txt', encoding='utf-8') as f:
text = f.read()
print(text)
| Способ | Что возвращает |
|---|---|
f.read() | весь оставшийся текст одной строкой |
f.readline() | следующую строку |
f.readlines() | список оставшихся строк |
for line in f | по очереди перебирает строки без загрузки всего файла |
Несколько чисел в каждой строке
with open('data.txt') as f:
for line in f:
nums = [int(x) for x in line.split()]
print(nums)
Одно число в каждой строке
with open('data.txt') as f:
nums = [int(line) for line in f]
print(max(nums))
Пропустить заголовок
with open('data.txt') as f:
next(f)
for line in f:
x, y = map(int, line.split())
print(x, y)
Десятичная запятая
x = float('12,5'.replace(',', '.'))
print(x)
Результат:
12.5
Путь Windows. Обычный обратный слеш обозначает спецсимвол. Используй raw-строку
r'C:\ege\data.txt'или прямые слеши:'C:/ege/data.txt'.
13. Библиотеки и модули
Модуль — файл с готовым кодом. Импорт позволяет использовать его функции, классы и константы.
Большинство полезных для ЕГЭ модулей входит в стандартную библиотеку Python.
Три формы импорта
import math
print(math.sqrt(25))
print(math.pi)
from math import gcd
print(gcd(18, 24))
Результат:
5.0
3.141592653589793
6
| Запись | Особенность |
|---|---|
import math | понятно, откуда взято имя: math.sqrt(...) |
from math import sqrt | можно писать просто sqrt(...) |
from math import * | импортирует много имён; в больших программах лучше избегать |
Полезные модули
| Модуль | Для чего пригодится |
|---|---|
math | корни, НОД, факториал, константы и математические функции |
itertools | перестановки, сочетания и декартовы произведения |
string | готовые наборы букв и цифр |
ipaddress | работа с IP-адресами и сетями |
Про numpy.
numpy— сторонняя библиотека и обычно не нужна для базовых решений ЕГЭ. Надёжнее уметь решать задачи стандартными средствами Python.
14. Полезные приёмы
Системы счисления
bin, oct и hex переводят целое число в строку с префиксом системы счисления.
Обратное преобразование выполняет int(строка, основание).
x = 35
print(bin(x))
print(oct(x))
print(hex(x))
print(int('100011', 2))
Результат:
0b100011
0o43
0x23
35
f-строки
Внутри фигурных скобок вычисляется выражение, а результат вставляется в текст.
name = 'Лена'
score = 88
print(f'{name}: {score} баллов')
Результат:
Лена: 88 баллов
Длинные условия
Лучше переносить длинное выражение внутри круглых скобок. Обратный слеш для переноса допустим, но скобки читаются надёжнее.
if (a > 0
and b > 0
and (a + b) % 2 == 0):
print('условие выполнено')
Распаковка
Если количество значений известно, список или результат split() можно сразу разложить по переменным.
Если введено:
5 7x, y = map(int, input().split())
print(x + y)
Результат:
12