Ему нужен файл. И лежать он должен там же, где лежит сама прога. А где она лежит? Хз. Поэтому положим ее в C:\000. Не спрашивайте. Одного нуля мало, четыре будет перебор, так что название 000 в самый раз. File-Save as, создаем директорию 000, имя даем ege-17-1.py, поехали
С сайта гиа скачиваю файл 17.txt в ту же директорию, втыкаю в код. Так, переменные объявляются по-простому, без типа.
count = 0
m = -20001
После открытия файла данные из него переносятся в массив одной командой
f = open('17.txt')
l = [int(i) for i in f]
Затем цикл по массиву, внутри цикла условие
for i in range(len(l) - 1):
if (l[i] % 3 == 0) or (l[i + 1] % 3 == 0):
Вместо фигурных скобок или begin\end – просто отступы; синтаксис выглядит корявым, но лаконичным. Если условие выполняется – наращиваем счетчик, присваиваем переменной максимальное значение из того что уже есть в ней или суммой текущего и следующего элемента. Синтаксис непривычен, сама буду писать по-другому. Но пока – как есть:
count += 1
m = max(m, l[i]+ l[i + 1])
После окончания цикла – вывод счетчика и переменной. Это реально все? Зеленый треугольник… барабанная дробь.. заработало!
День заканчивается, но и осталось немного – написать код самой, не заглядывая в решение. Придется вкурить в само задание:
Так, посчитать надо “количество пар” и максимум “сумм элементов”. При этом парой считаются “идущие подряд”, при этом в паре “хотя бы одно делится на 3”. Поэтому в коде цикл, в котором if с or, %3 == 0 <- явно признак делимости на три, проверяется текущий и следующий элемент массива (идущие подряд, ага). Заботливо указан диапазон значений, от -10000 до 10000. Ищем максимум, так что переменную надо загнать ниже минимума, поэтому m = -20000.
Пришла пора писать код самой. File-New-Python file
переменные называю привычно, сразу инициализирую:
cnt = 0
maxVal = -20000
Так, файл открывается в переменную по-простому, в одинарных кавычках. Но, придется запомнить, как после открытия файла загнать его содержимое в массив. Раз массив – значит квадратные скобки. В них – тип int и цикл по файлу f
f = fopen('17.txt')
l = [int(i) for i in f]
Теперь цикл по массиву, до предпоследнего элемента, IDE подсвечивает, что нужно двоеточие
for i in range(len(l)-1):
Внутри if с условием, что или текущий или следующий элемент делятся на 3. Для начала просто нарастим счетчик. И выведем его после цикла. Синтаксис print подсказывает IDE, спасибо
for i in range(len(l)-1):
if((l[i]%3 == 0) or (l[i+1]%3 == 0)):
cnt = cnt + 1
print(cnt)
Ctrl+S, зеленый треугольник, ошибочка… Не знает fopen, предлагает просто open. Штош, попробуем..Получилось!
Пора внутри if не просто счетчик наращивать, но еще и переменной что-то там присваивать. Так, вспоминаем, что нам надо: “максимальную из сумм элементов”. Запоминать синтаксис функции max – не по фен-шую, напишу сама, как понимаю: “Если сумма i-го и i+1-го больше, чем maxVal, то в maxVal и положим эту сумму”. Ну и в printе после цикла это самое maxVal надо вывести. попробую через запятую, с пробелом в двойных кавычках:
if(l[i]+l[i+1] > maxVal):
maxVal = l[i] + l[i+1]
print(cnt, " ", maxVal)
Заработало!
Кто молодец? Я – молодец! Осталось сделать ставку – что из всей этой фигни останется в голове до завтра? Пока самый мутной кусок – запомнить, как содержимое файла засунуть в массив одной командой. Этот синтаксис, походу, придется просто зазубрить.
Как с этим справится наш герой? Смотрите это в серии второй: День второй