Как считать данные из файла в список

Для работы с файлом удобно использовать конструкцию with:

with open (file) as f:
инструкции

Эта конструкция определяет для открытого файла переменную f и выполняет набор инструкций. После их выполнения файл автоматически закрывается. Метод readlines()прочитает и вернёт все строки в файле в виде списка.

Для работы с данными файла мы будем использовать следующий программный код:

with open (′17.txt′) as f:
a=[int(x) for x in f.readlines()]

Основные операторы для работы со списками (массивами)

В Python для того, чтобы работать с большим количеством данных, используется структура данных под названием список. Список представляет собой последовательность (набор) элементов, пронумерованных от 0.

Чтобы объявить список, нужно в квадратных скобках перечислить его элементы через запятую:

a=[1,2,3,4,5]

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

Методы списков

a.append(x)   добавляет элемент x в конец списка a
a.count(x)     возвращает количество элементов списка a со значением x
а.sort()  сортирует список a в порядке возрастания
а.reverse()  разворачивает список a в обратном порядке
a.clear()   очищает список a

Функции для работы со списками
  
len(a)  возвращает длину списка a (количество элементов списка a)
min(a)  возвращает наименьший элемент списка a
max(a)  возвращает наибольший элемент списка a
sum(a)   возвращает сумму элементов списка a

Решение задачи можно разбить на этапы

1. Считать данные из текстового файла в массив (список). Важно, чтобы программа решения и текстовый файл лежали в одной папке (или необходимо указать полный путь для считывания файла).

with open (′17.txt′) as f:
a=[int(x) for x in f.readlines()]

2. Необходимо в массиве найти максимальное число, кратное 3. Для этого инициализируем пустой массив b. Затем с помощью цикла for переберём все элементы массива a. Если элемент кратен 3, то запишем его в массив b. После выполнения цикла в переменную m запишем максимальное значение массива b.

b=[]
for i in range (0,len(a)):
        if a[i]%3==0:
           b.append(a[i])
m=max(b)

3. Определим количество подходящих пар. Для этого очистим массив b. Затем с помощью цикла for переберём все элементы массива a. Если хотя бы один элемент пары делится на 3 и сумма элементов пары не больше m, то запишем эту сумму в массив b.
  
b=[]
for i in range (0,len(a)−1):
    if (a[i]%3==0 or a[i+1]%3==0) and (a[i]+a[i+1]<=m):
       b.append (a[i]+a[i+1])

4. Выведем на экран количество элементов массива b — оно равно количеству подходящих пар — и максимальную сумму:

print (len(b),max(b))

Получилась программа:

with open (′17.txt′) asf:
   a= [int(x) for x in f.readlines()]
b=[]
for i in range (0,len(a)):
      if a[i]%3==0:
         b.append (a[i])
m=max(b)

b=[]
for i in range (0,len(a)−1):
      if (a[i]%3==0 or a[i+1]%3==0) and (a[i]+a[i+1]<=m):
         b.append (a[i]+a[i+1])

print (len(b),max(b))

Ответ: 2439 998.

Прототипы с ЕГЭ

ФАЙЛЫ >>

Задача №1 В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, в которых хотя бы одно число делится на 3, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Например, для последовательности из пяти элементов: 6; 2; 9; –3; 6 – ответ: 4 11

Ответ: 2802 1990

Задача №2 В файле содержится последовательность чисел. Элементы последовательности могут принимать целые значения от -100 000 до 100 000 включительно. Определите количество пар последовательности, в которых сумма элементов меньше минимального положительного элемента последовательности, кратного 19. Гарантируется, что такой элемент в последовательности есть. В ответе запишите количество найденных пар, затем абсолютное значение максимальной из сумм элементов таких пар. В данной задаче под парой подразумевается два подряд идущих элемента последовательности.

Ответ: 4984 696

Задача №3 В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите количество пар последовательности, в которых только одно число оканчивается на 3, а сумма квадратов элементов пары не меньше квадрата максимального элемента последовательности, оканчивающегося на 3. В ответе запишите два числа: сначала количество найденных пар, затем максимальную из сумм квадратов элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Ответ: 180 190360573

Задача №4 В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых хотя бы один из элементов является трёхзначным числом, а сумма элементов пары кратна минимальному трёхзначному элементу последовательности, оканчивающемуся на 5. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Ответ: 13 9500

Задачи уровня ЕГЭ

ФАЙЛЫ >>

Задача №1 В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 10 000 включительно. Определите количество пар последовательности, в которых только одно число кратно 7, а сумма элементов пары кратна максимальному элементу последовательности, оканчивающемуся на 0F в шестнадцатеричной системе счисления. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Ответ: 2 9487

Задача №2 В файле представлена последовательность целых положительных чисел, не превышающих 10000. Симметричной парой называется такая пара чисел в заданной последовательности, элементы которой расположены на равном расстоянии от концов последовательности. Например, в последовательности 1 2 3 4 3 5 1 симметричными парами назовем пары (1, 1), (2, 5), (3, 3). Число 4 не образует пару, так как оно находится на равном удалении от краев, следовательно, это одно число, а не два.
Найдите количество симметричных пар таких, что среднее арифметическое максимального и минимального значений последовательности строго меньше значения одного элемента пары и строго больше значения второго элемента пары.
В качестве ответы введите количество найденных пар и максимальную суммы элементов среди найденных пар.
Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Ответ: 2120 14972

Задача №3 В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых сумма чисел четна, а разница между числами кратна минимальному числу, кратному 103. Гарантируется, что элемент, кратный 103, в последовательности есть.
В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Ответ: 4 145300

Задача №4 В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения, по модулю не превосходящие 10 000 включительно. Найдите такие пары элементов, в которых произведение элементов больше, чем произведение рядом стоящих чисел (перед и после пары). В качестве ответа выведите максимальную сумму среди найденных пар, затем количество таких из них, в которых есть хотя бы одно число, большее среднего арифметического всех чисел в файле. Под парой в задаче подразумевается два подряд идущих числа. Первая и последняя пара в файле не могут быть искомыми, так как перед или после них нет чисел.

Ответ: 19703 3103

Задача №5 В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от -10000 до 10 000 включительно. Определите пары, среднее арифметическое в которых больше, чем количество чисел в последовательности, абсолютное значение которых меньше 100. В ответе запишите два числа: сначала количество найденных пар, а затем – максимальную сумму элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Ответ: 685 1990