. Определите минимум и максимум среди чисел, которые оканчиваются на 3 и делятся на 7
В файле содержится последовательность целых чисел. Элементы принимают целые значения от 1 до 10000 включительно. Определите минимум и максимум среди чисел, которые оканчиваются на 3 и делятся на 7.
В качестве ответа запишите сначала минимум, а потом максимум без пробелов и разделителей. Например, если минимум равен 99, а максимум - 1234, то ответ 991234.
Самая большая проблема, что в моём файле в конце чисел, стоит \n. И при добавлении в массив этих чисел добавляется и \n тоже. Но даже, когда я удалил \n, решение дальше не идёт.
mas = []
f = open("17.txt").read().splitlines()
if f % 10 == 3 and f % 7 == 0:
mas.append(f)
print(f)
Ответы (2 шт):
Автор решения: Rendivy
→ Ссылка
mas = []
f = open("17.txt").read().splitlines()
for i in range(len(f)):
if int(f[i]) % 10 == 3 and int(f[i]) % 7 == 0:
mas.append(f[i])
mas.sort()
print(mas[0],mas[-1])
Воспользовался советом пройтись циклом по элементам.
Автор решения: Stanislav Volodarskiy
→ Ссылка
Задача решается в константной памяти. Не надо хранить целиком массив значений:
min_v = 10_000 # минимум начинается с максимума
max_v = 1 # максимум начинается с минимума
with open('17.txt') as f: # привыкайте открывать файлы в `with`
for line in f: # перебираем строки из файла
v = int(line) # переводим в целое
if v % 10 == 3 and v % 7 == 0: # оканчивается на 3 и делится на 7?
min_v = min(min_v, v) # обновляем текущий минимум
max_v = max(max_v, v) # обновляем текущий максимум
print(min_v, max_v, sep='') # печать без пробела