Работа с файлами в Python
НАВИГАЦИЯ ПО СТРАНИЦЕ
легко понять и запомнить

Обязательно пригодится:
Элементы списка обозначаются a[0], a[1], a[2], a[3] и т. д., соответственно, чтобы перебрать все элементы списка, мы запускаем цикл
for i in range (len(a)-1):
if a[i] >0 and a[i+1]> 0 #поиск пар положительных чисел
Последние цифры у отрицательных чисел всегда ищутся через
функцию abs (модуль!), так у отрицательных чисел остаток от деления считается иначе, он не равен последней цифре числа.

В файле 14.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 0 до 10 000 включительно. Рассматривается множество элементов последовательности, больших 100 и меньших 889, которые удовлетворяют следующим условиям:
− цифра в разряде десятков не превышает 3;
− цифра в разряде сотен принадлежит отрезку [5; 8];
− при переводе в 16СС не оканчивается на А;
− не кратно 18.
Найти количество таких чисел и максимальное из них.
Решение:
a = [int(x) for x in open('14.txt')]
d = []
for i in range (len (a)):
if (a[i] > 100 and a[i] < 889 and a[i] % 100 // 10 <=3 and a[i] % 1000 // 100 <=8 and a[i] % 1000 // 100 >=5 and a[i] % 16 !=10 and a[i] % 18 !=0):
d.append(a[i])
print (len(d),max(d))
Ответ: 29 827
В файле 15.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 0 до 10 000 включительно. Определить количество пар чисел, в которых хотя бы один из двух элементов больше, чем наибольшее из всех чисел в файле, делящихся на 218, и хотя бы один элемент из двух оканчивается на E в 16-ой системе счисления. В ответе записать два числа: сначала количество найденных пар, а затем — минимальную сумму элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Решение (вариант 1):
mn = 20001
k = 0
mx = -1
a = [int(x) for x in open('15.txt')]
for i in range(len(a)):
if a[i] % 218 == 0:
mx = max(mx,a[i])
for i in range (len (a)-1):
if (a[i] > mx or a[i+1]>mx) and (a[i] % 16 == 14 or a[i+1] % 16 == 14):
k +=1
mns = a[i] + a[i+1]
mn = min(mn,mns)
print (k,mn)
Ответ: 29 10072
Решение (вариант 2):
mx = -1
a = [int(x) for x in open('15.txt')]
for i in range(len(a)):
if a[i] % 218 == 0:
mx = max(mx,a[i])
d =[]
for i in range (len (a)-1):
if (a[i] > mx or a[i+1]>mx) and (a[i] % 16 == 14 or a[i+1] % 16 == 14):
d.append(a[i]+a[i+1])
print (len(d),min(d))
Ответ: 29 10072
Решение (вариант 3):
a = [int(x) for x in open('15.txt')]
mx = max([x for x in a if x % 218 == 0])
d =[]
for i in range (len (a)-1):
if (a[i] > mx or a[i+1]>mx) and (a[i] % 16 == 14 or a[i+1] % 16 == 14):
d.append(a[i]+a[i+1])
print (len(d),min(d))
Ответ: 29 10072
Суть представленных вариантов решений в постоянном оптимизируемом коде.