ВВОД/ЧТЕНИЕ ДАННЫХ
Это общий этап для "переборного" и "эффективного" решений и мало зависит от "основного" условия задания.
Правильная организация этого этапа позволяет избежать ошибок и "не усложнять" решение
Будем формировать решение, в котором все данные считываются и храняться в оперативной памяти компьютера
(в заданиях КЕГЭ это допустимо и можно считать "обязательным" при решении)
После этого этапа доступ к файлу больше не нужен, а данные должны храниться в соответствующем формате
В таблице приведено несколько решений для этого этапа (все решения взяты из ученической практики)
№ |
Код |
Комментарий |
Пример 1 |
f=open('name.txt")
n=int(f.readline())
m=int(f.readline())
v=f.readlines() |
1. Список v содержит данные в строковом формате, значит потребуется дополнительное преобразование типов
2. Количество строк в списке v может отличаться от n |
Пример 2 |
a = []
with open('name.txt') as file:
a = [int(num) for num in file.readlines()]
n,m = a[:2]
a = a[2:] |
1. Количество строк в списке v может отличаться от n
2. Придется менять конструкцию ввода, если в строке с данными по два числа |
Пример 3 |
with open(name.txt', 'r', encoding='utf-8') as file:
n = int(file.readline().strip())
m = int(file.readline().strip())
data = [int(j) for j in [i.strip() for i in file.readlines()] if j != ''] |
1. Использование "лишних" параметров влияет на время ввода кода (увеличивает "временные" затраты пользователя)
2. Количество строк в списке v может отличаться от n |
Коды из всех примеров позволят получить получить "верные" ответы, но можно ли назвать их "правильными"?
При организации ВВОДА будем придерживаться следующих принципов:
- файл из задания сохраняется в "рабочей папке" (для большинства случаев это - "правая кнопка мыши на ссылке - сохранить ссылку как")
- имя файла не изменятся без острой необходимости
- текс программы также сохраняется в "рабочей папке"
- параметры "по умолчанию" опускаются
- для ввода однотипных слов/строк используем технологию "copy-paste" (поэтому длина слова f.readline() не страшна )
Для файла из вложения, можем получить следующий код программы (комментария для иллюстрации команд - на экзамене не нужны)