Восьмое занятие углублённого курса: текстовые и двоичные файлы, файловая переменная, чтение по строкам и readline, пары соседних чисел, два прохода по файлу, самая длинная серия, запись в файл — в духе задания 17 ЕГЭ, урок 16 плана
Текстовый файл — символы и переводы строк, открывается Блокнотом. Двоичный — байты в своём формате (картинка, архив). Файл данных кладут в папку программы и открывают по имени: f = open("17.txt"). f — файловая переменная: помнит, докуда файл прочитан.
for line in f — по всем непрочитанным строкам до конца файла. f.readline() — одна следующая строка. Строка — текст: x = int(line), перевод строки int() отбросит сам. Второй проход — f.close() и снова open.
g = open("out.txt", "w") — "w" стирает старое содержимое, "a" дописывает в конец. print(x, file=g) пишет строку в файл. В конце g.close().
prev = int(f.readline()) до цикла; в цикле пара (prev; x), в конце витка prev = x. Пар на одну меньше, чем чисел. prev = 0 — лишняя пара с нулём.
cur — длина текущей серии, best — лучшая. Подходит: cur + 1, иначе серия начинается заново. best сравнивать на каждом шаге — иначе серия в конце файла потеряется.
Последняя цифра: abs(x) % 10, потому что -17 % 10 == 3. Наибольшее и наибольшая сумма: старт не с нуля, а с числа меньше любого возможного.
Восьмое занятие углублённого курса: текстовые и двоичные файлы, файловая переменная, чтение по строкам и readline, пары соседних чисел, два прохода по файлу, самая длинная серия, запись в файл — в духе задания 17 ЕГЭ, урок 16 плана
Текстовый файл — символы и переводы строк, открывается Блокнотом. Двоичный — байты в своём формате (картинка, архив). Файл данных кладут в папку программы и открывают по имени: f = open("17.txt"). f — файловая переменная: помнит, докуда файл прочитан.
for line in f — по всем непрочитанным строкам до конца файла. f.readline() — одна следующая строка. Строка — текст: x = int(line), перевод строки int() отбросит сам. Второй проход — f.close() и снова open.
g = open("out.txt", "w") — "w" стирает старое содержимое, "a" дописывает в конец. print(x, file=g) пишет строку в файл. В конце g.close().
prev = int(f.readline()) до цикла; в цикле пара (prev; x), в конце витка prev = x. Пар на одну меньше, чем чисел. prev = 0 — лишняя пара с нулём.
cur — длина текущей серии, best — лучшая. Подходит: cur + 1, иначе серия начинается заново. best сравнивать на каждом шаге — иначе серия в конце файла потеряется.
Последняя цифра: abs(x) % 10, потому что -17 % 10 == 3. Наибольшее и наибольшая сумма: старт не с нуля, а с числа меньше любого возможного.