Международный школьный научный вестник
Научный журнал для старшеклассников и учителей ISSN 2542-0372

О журнале Выпуски Правила Олимпиады Учительская Поиск Личный портфель

РАБОТА С ФАЙЛАМИ НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ PYTHON. РАЗБОР ЗАДАНИЯ ИЗ ЕГЭ

Павлова А.А. 1
1 Академическая гимназия Тверского государственного университета
текстовый файл
программа
компьютерный эксперимент
анализ результатов
1. Операционная система Windows 10
2. Среда программирования Python – 3.8.0
3. Приложение Microsoft Office Word 2016
Список использованных источников и литературы
1. Всё о Python. Работа с текстовыми файлами [Электронный ресурс]. – Режим доступа: https://all-python.ru/osnovy/tekstovye-fajly.html
2. Информатика (базовый и углублённый уровни) (в 2 частях). 10 класс. Ч. 2 : учебник / К.Ю. Поляков, Е.А. Еремин. – М. : БИНОМ. Лаборатория знаний, 2019. – 352 с.: ил.
3. Информатика. Единый государственный экзамен. Готовимся к итоговой аттестации : [учебное пособие] / В.Р. Лещинер, С.С. Крылов. – Москва. Издательство “Интеллект-Центр”, 2025. – 144 с.
4. Работа с файлами [Электронный ресурс]. – Режим доступа: https://metanit.com/python/tutorial/4.1.php
5. Текстовые файлы [Электронный ресурс]. – Режим доступа: http://profil.adu.by/mod/book/tool/print/index.php?id=3346

Введение

Данная статья является реферативным изложением основной работы. Полный текст научной работы, иллюстрации и иные дополнительные материалы доступны на сайте XXVI Международного конкурса научно-исследовательских и творческих работ учащихся “Старт в науке” по ссылке: https://school-science.ru/26/4/63231.

В данной работе представлен материал по разработке проекта “Работа с файлами на языке программирования Python”. Тема достаточно актуальная и представляет повышенный интерес для учащихся профильных классов, сдающих ЕГЭ по информатике.

Высокоуровневый язык программирования Python 3 предоставляет своим пользователям массу полезных средств для взаимодействия с текстовыми файлами. Встроенные методы платформы позволяют не только создавать документы для хранения строковой информации, но и читать из них данные, а также записывать, удалять и всячески манипулировать их содержимым [1].

Цель данной работы заключается в том, чтобы получить дополнительные теоретические знания по этой теме, провести компьютерный эксперимент и анализ полученных результатов.

Задача состоит в том, чтобы подобрать соответствующий материал с последующей систематизацией, обобщением и иллюстрацией текста.

Работа состоит из двух частей: описательной (рассмотрено несколько режимов работы с файлами) и практической (приведён пример разработки программ (скриптов) с использованием текстовых файлов и соответствующими комментариями. Достаточно подробно расмотрен вариант решения задачи из ЕГЭ по информатике № 27).

Работа с файлами

Создание текстового файла

В настоящее время компьютеры обрабатывают огромные массивы больших данных, ввод таких данных с клавиатуры потребовал бы намного больше времени, чем их обработка. Поэтому в современных языках программирования предусмотрена возможность читать данные из файла и записывать результаты в файл. Один из самых простых форматов файлов — это текстовые файлы, которые хранят только символы из кодовой таблицы. Создавать и просматривать такие файлы можно с помощью программы Блокнот.

При работе с текстовыми файлами изменяется только формат ввода и вывода данных. Алгоритмическая составляющая процесса решения задачи не изменяется. Обычно с помощью программы Блокнот создается файл, содержащий входные данные — те, которые пользователь мог ввести с клавиатуры. По завершении работы программа выводит результат не в консоль, а в файл, который можно открыть в Блокноте. Сохраняются файлы в папке проекта.

Чтобы программа могла работать с файлами, необходимо указать имена этих файлов и определить, для какой цели нужен файл — для ввода или для вывода [5].

Режимы работы с файлами

Python поддерживает множество различных типов файлов, но условно их можно разделить на два виде: текстовые и бинарные. Текстовые файлы – это, к примеру, файлы с расширением cvs, txt, html, в общем любые файлы, которые сохраняют информацию в текстовом виде. Бинарные файлы – это изображения, аудио и видеофайлы и т.д. В зависимости от типа файла работа с ним может немного отличаться.

При работе с файлами необходимо соблюдать некоторую последовательность операций:

1. Открытие файла с помощью метода open()

2. Чтение файла с помощью метода read() или запись файла посредством метода write()

3. Закрытие файла методом close().

Открытие файла для чтения, записи и дозаписи

Чтобы начать работу с файлом, его надо открыть с помощью функции open(), которая имеет следующее формальное определение: open(file, mode).

Первый параметр функции определяет путь к файлу. Путь файла может быть абсолютным, то есть начинается с буквы диска, например, C://somedir/somefile.txt. Либо может быть относительным, например, somedir/somefile.txt - в этом случае поиск файла будет идти относительно расположения запущенного скрипта Python.

Второй передаваемый аргумент - mode устанавливает режим открытия файла в зависимости от того, что мы собираемся с ним делать. Существует 4 общих режима:

· r (Read). Файл открывается для чтения. Если файл не найден, то генерируется исключение FileNotFoundError;

· w (Write). Файл открывается для записи. Если файл отсутствует, то он создается. Если подобный файл уже есть, то он создается заново, и соответственно старые данные в нём стираются;

· a (Append). Файл открывается для дозаписи. Если файл отсутствует, то он создается. Если подобный файл уже есть, то данные записываются в его конец;

· b (Binary). Используется для работы с бинарными файлами. Применяется вместе с другими режимами - w или r, например, rb (чтение бинарных файлов) и wb (запись бинарных файлов).

· r+. Файл открывается одновременно для чтения и записи. Если файл не найден, то генерируется исключение FileNotFoundError;

· w+. Файл открывается одновременно для чтения и записи. Если файл не существует, то он автоматически создается. Если файл существует, то он перезаписывается;

· a+. Файл открывается одновременно для чтения и записи. Если файл не существует, то он автоматически создается. Если файл существует, то данные добавляются в конец файла.

Например, открытие текстового файла на запись: myfile = open(“hello.txt”, “w”).

Например, открытие бинарного файла на чтение: myfile = open(“image.png”, “rb”) [4].

Примечание: Если режим не указан, то по умолчанию — режим чтения (r).

Разработка программ с использованием текстовых файлов

Обработка массивов

Описание формальной модели

В текстовом файле записаны целые числа. Требуется вывести в другой текстовый файл те же числа, но отсортированные в порядке возрастания.

Особенность этой задачи состоит в том, что для сортировки необходимо удерживать в памяти все числа, т. е. для их хранения нужно выделить массив [2].

Компьютерная модель

Входной и выходной текстовые файлы

Входные данные (Input.txt)

Выходные данные (Output.txt)

7

2

10

4

9

6

1

8

5

3

1 2 3 4 56 7 8 9 10

Сохранить текстовые файлы в отдельную папку.

Скрипт (программа) с двумя файлами

print('Прочитать числа из входного файла Input.txt')

print('найти их сумму и отсортировать по возрастанию')

print('Числа из текстового файла Input.txt: ')

s = 0 #инициализация переменной s

with open('Input.txt', 'r') as f:

n = f.read().splitlines()

print(n) #выдать на экран числа из файла

for i in open('Input.txt'): #Открыть текстовый файл для чтения

s += int(i) #найти сумму всех чисел в файле

print('Сумма всех чисел: s =',s)

print('Перевести данные из файла в массив')

a = [] #объявить массив a

for i in open('Input.txt'):

a.append(int(i)) #файл закрывается автоматически

print("Вывод сформированного массива")

print(a)

print('Отсортировать массив по возрастанию')

for i in open('Input.txt'):

a.sort(reverse = False) #сортировка с помощью модуля sort

print("Вывод отсортированного массива")

print(a)

#данные из массива записать в выходной файл: Output.txt

print('Данные из массива перенести в файл Output.txt')

f = open('Output.txt', 'w') #открыть файл Output.txt для записи

f.write(str(a)) #запись чисел из массива в файл

f.close() #закрыть файл Output.txt

print('Сформированный 2-й файл - Output.txt')

for i in open('Output.txt'):#Открыть файл Output.txt для печати

print(i) #печать сформированного и отсортированного файла

print('Программа завершена')

Сохранить программу в папку вместе с текстовыми файлами.

Компьютерный эксперимент

1. Войти в программную среду Python (Пайтон) – IDLE; выполнить команду [File – New File]; для повторного выполнения – [File – Open].

2. В текстовом редакторе набрать программу (скрипт) с пояснениями – комментариями на русском языке.

3. Запустить программу на выполнение, выполнив команду: [Run – Run Module (F5)].

4. В появившемся окне (рис. 1) нажать на <OK>, далее сохранить файл, указав имя программы и место сохранения (папка с текстовыми файлами):

Рис. 1. Окно для сохранения выполняемого файла

Выполнение в среде разработки Python

Прочитать числа из входного файла Input.txt

найти их сумму и отсортировать по возрастанию

Числа из текстового файла Input.txt:

['7', '2', '10', '4', '9', '6', '1', '8', '5', '3']

Сумма всех чисел: s = 55

Перевести данные из файла в массив

Вывод сформированного массива

[7, 2, 10, 4, 9, 6, 1, 8, 5, 3]

Отсортировать массив по возрастанию

Вывод отсортированного массива

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Данные из массива перенести в файл Output.txt

Сформированный 2-й файл - Output.txt

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Программа завершена

5. Для выхода из среды программирования выполнить команду [File – Exit]; при завершении выполнения файла .exe – нажать на <Enter>.

Запустить проект на выполнение можно, как через среду программирования Python, так и с помощью созданного исполняемого файла с расширением .exe. В отдельной папке находятся текстовые файлы и сохранённый файл .exe.

Обработка строк

Как известно, современные компьютеры большую часть времени заняты обработкой символьной, а не числовой информации [2].

Описание формальной модели

Предположим, что в текстовом файле записаны данные о результатах проведения экзаменов. В каждой строке – Фамилия, предмет и количество полученных баллов. В текстовый файл необходимо добавить строку, удалить необходимую строку и выбрать учащихся, у которых экзаменационный балл равен 10.

Компьютерная модель

Входные и выходные данные

Входные данные

Выходные данные

 

Список учащихся

Ильин физика 8

Иванов математика 10

Сидоров информатика 9

Петров физика10

Скорректированный файл

Иванов математика 10

Сидоров информатика 9

Петров физика 10

Фёдоров информатика 10

 

Добавить строку

Фёдоров информатика 10

 

Список отобранных учащихся

Иванов математика 10

Петров физика10

Фёдоров информатика 10

 

Удалить 1-ю строку

Ильин физика 8

 

Скрипт (программа)

добавить строку, удалить строку и найти максимальные баллы

print('Из текстового файла выбрать учащихся(строки), ')

print('у которых экзаменационный балл равен 10')

print('Список учащихся: ')

for s in open('Input.txt'): #открыть текстовый файл Input.txt

print(s, end = '')

print('Введите дополнительные строки')

with open('input.txt', 'r+') as file:

file.seek(0,2) #переместить курсор в конец файла

while True:

s = input() #ввод строки

if s == '': break #условие выхода из цикла

file.write(s + '\n') #построчная запись строки

with open('input.txt', 'r') as file: #открыть файл для чтения

s = file.readlines()

del s[0] #удалить первую строку с индексом 0

#при удалении строки в файле оставшиеся смещаются вверх

#(индекс переменной становится меньше на 1)

#del s[0], s[2] (3-я после удаления 1-й, т.е. начальная 4-я)

with open('input.txt', 'w') as file: #открыть файл для записи

s = file.writelines(s)

print('Скорректированный файл:')

for i in open('input.txt'): #печать полученного файла

print(i, end = '')

print('Список отобранных учащихся: ')

for s in open('Input.txt'):

#преобразовать строковую переменную в целое число

age = int(s.split()[2])

if age == 10: #условие отбора данных

print(s, end = '') #отобранные строки выдать на экран

print('Программа завершена')

Выполнение в среде разработки Python

Из текстового файла выбрать учащихся(строки),

у которых экзаменационный балл равен 10

Список учащихся:

Ильин физика 8

Иванов математика 10

Сидоров информатика 9

Петров физика 10

Введите дополнительные строки

Фёдоров информатика 10

Скорректированный файл:

Иванов математика 10

Сидоров информатика 9

Петров физика 10

Фёдоров информатика 10

Список отобранных учащихся:

Иванов математика 10

Петров физика 10

Фёдоров информатика 10

Программа завершена

Разбор задания из ЕГЭ № 27

Подготовка к ЕГЭ. Решение задач в среде программирования Python (задание №27)

Учебная литература и интернет-ресурсы:

ЕГЭ. Информатика: Единый государственный экзамен. Готовимся к итоговой аттестации : [Учебное пособие] / В.Р. Лещинер, С.С. Крылов. – Москва. Издательство “Интеллект-Центр”, 2025. – 144 с.

Программное обеспечение:

OS Windows 10

Среда программирования Python 3.8

Задание № 27 является наиболее сложным и трудоёмким заданием КЕГЭ. Оно проверяет умение создавать собственные программы для анализа числовых последовательностей.

Разбор задания № 27

Описание формальной модели

Рассмотрим решение задания № 27 из типовых экзаменационных вариантов ФИПИ. Имеется набор данных, состоящий из 6 пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Определите максимально возможную сумму, соответствующую условиям задачи.

Входной файл содержит в первой строке количество пар N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10000 [3].

Решение:

Изкаждой пары выбирать максимальное число, вычислять сумму выбранных чисел. Если полученная сумма неделится на3, то она иявляется ответом. Если делится, то изнеё нужно вычесть предварительно найденную минимальную разницу вкакой-либо паре, неделящуюся на3. Гарантируется, что решение задачи существует (раньше негарантировалось).

Входные и выходные данные

Файл с входными данными:

Выходные данные:

6

1 6

20 13

20 4

2 4

12 3

13 4

73

Для проверки алгоритма можно использовать трассировку – “ручная прокрутка”. Для исходного файла запишем в виде таблицы изменения значений всех переменных. После выполнения определённых шагов будет получен результат: s = 75, который необходимо будет скорректировать.

Трассировка алгоритма на данных, взятых из файла

 

№ цикла

Данные

a > b

max = a

min = b

b > a

max = b

min = a

Сумма максимальных чисел

s = s + max

Разница в паре

d = max – min

d % 3 ! = 0

 

a

 

b

 

s

 

d

1

1

6

0

0

min = 1

max = 6

s = 0 + 6 = 6

d = 6 – 1 = 5

2

20

13

6

5

max = 20

min = 13

s = 6 + 20 = 26

d = 20 - 13 = 7

3

20

4

26

5

max = 20

min = 4

s = 26 + 20 = 46

d = 20 - 4 = 16

4

2

4

46

5

min = 2

max = 4

s = 46 + 4 = 50

d = 4 - 2 = 2

5

12

3

50

2

max = 12

min = 3

s = 50 + 12 = 62

d = 12 – 3 = 9

6

13

4

62

2

max = 13

min = 4

s = 62 + 13 = 75

d = 13 – 4 = 9

 

 

 

75

2

Выход из цикла

Проверка полученного результата (значение остатка от деления полученной суммы на 3)

s % 3 != 0

При s = 75 остаток от деления на 3 равен нулю

Скорректировать полученный результат согласно заданному алгоритму: из полученной суммы (s) нужно вычесть предварительно найденную минимальную разницу (d) в какой-либо паре, не делящуюся на 3. В нашем случае d = 4 - 2 = 2.

s = s – d; s = 75 - 2 = 73

Ответ: 73

Компьютерная модель

Решение на языке Python – несколько вариантов:

1-й вариант:

Перебор элементов массива с вычислением какого-либо значения на языке Python можно выполнить одной строкой с помощью генераторов списка.

Программа (скрипт)

print('Найти максимальную сумму')

f = open('input.txt', 'r')

n = int(f.readline()) #количество пар

a = [] #объявить массив a

for i in range(n):

a.append(list(map(int, f.readline().split())))

#максимальное число в паре; сумма выбранных чисел

s = sum([max(x, y) for x, y in a])

ans = s

print('Промежуточная сумма =',ans)

#проверка условия: сумма не делится на 3 и максимально возможная

d = min([abs(x - y) for x, y in a if abs(x - y) % 3 != 0])

if s % 3 == 0:

ans = s - d

print("Максимальная сумма:", ans)

print("Программа завершена!")

Выполнение в среде разработки Python

Найти максимальную сумму

Промежуточная сумма = 6

Промежуточная сумма = 26

Промежуточная сумма = 46

Промежуточная сумма = 50

Промежуточная сумма = 62

Промежуточная сумма = 75

Максимальная сумма: 73

Программа завершена!

2-й вариант:

Это задание можно выполнить, сохранив в массиве все исходные данные, перебрать все возможные способы выбора одного элемента из каждой пары и найти максимальную сумму, соответствующую условиям задачи.

Программа (скрипт)

print('Найти максимальную сумму')

f = open('input.txt', 'r') #открыть текстовый файл для чтения

n = int(f.readline()) #вычислить количество пар

a = [] #объявить массив a

#данные из файла Input.txt записать в массив a

for i1 in range(n):

a.append(list(map(int, f.readline().split())))

#s – сумма выбранных чисел; max – максимум в паре

s = 0; max = 0 #начальные значения переменных s и max

#циклы перебора элементов массива a

for i1 in range(2):

for i2 in range(2):

for i3 in range(2):

for i4 in range(2):

for i5 in range(2):

for i6 in range(2):

#найти сумму элементов (запись в две строки с переносом (\))

s = a[0][i1] + a[1][i2] + a[2][i3] + \

a[3][i4] + a[4][i5] + a[5][i6]

if ((s % 3 != 0) and (s > max)): #условие отбора

max = s

print('max =',max)

print('Максимальная сумма: ', max)

print('Программа завершена! ')

Выполнение в среде разработки Python

Найти максимальную сумму

max = 68

max = 70

max = 73

Максимальная сумма: 73

Программа завершена!

Анализ результатов

В результате проведённого компьютерного эксперимента показаны примеры выполнения программ (скриптов) с использованием открытия текстового файла и записи в него. Рассмотрены варианты работы с массивами и строками. Получены результаты, которые полностью соответствуют результатам тестовых примеров.

Заключение

В ходе разработки проекта получены дополнительные знания по программированию. Проведённый компьютерный эксперимент наглядно показывает практическую значимость проведённых исследований.

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

Python – современный высокоуровневый профессиональный язык программирования, изучение которого начинается в профильных классах общеобразовательных учреждений (элективные занятия по курсу: “Программирование”) на примере использования не только его основных конструкций, но и работы с текстовыми файлами, что достаточно наглядно показано в данной работе.

Программное обеспечение

1. Операционная система Windows 10

2. Среда программирования Python – 3.8.0

3. Приложение Microsoft Office Word 2016


Библиографическая ссылка

Павлова А.А. РАБОТА С ФАЙЛАМИ НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ PYTHON. РАЗБОР ЗАДАНИЯ ИЗ ЕГЭ // Международный школьный научный вестник. 2025. № 5. ;
URL: https://school-herald.ru/ru/article/view?id=1662 (дата обращения: 06.11.2025).