Python 3.7.2
x = int(input(), base = 10)
k3 = k5 = 0
for digit in map(int, list(str(x))):
if digit is 3: k3 += 1
elif digit is 5: k5 += 1
#Что бы не городить огромные условные конструкции,
#Мы просто "выключим" программу при кривом вводе
if k3 == k5 == 0: raise RuntimeError('bad input')
#Если введённое число не имеет нужных цифр - вылетаем с ошибкой Runtime error и сообщаем об этом
print(f'цифр 5 больше, счётчики: k3: {k3}, k5: {k5}' if (k5 > k3) else f'цифр 3 больше, счётчики: k3: {k3}, k5: {k5}')
y = int('5'*k5 + '3'*k3)
y1 = y - 7
#Это можно засунуть в print(), но раз уж надо...
print(x, y, y1, end = '\n')
Объяснение:
На скриншотах представлены исходный код программы в рабочем виде, без поломанных отступов, а так же результат работы для предложенных входных данных. Если сильно надо программу просто скопировать, сдать и забыть, а отсюда не копируется - попросите в комментариях, я залью это на какой нибудь сервис типа pastebin.
Стоит отметить, что задача не "на списки", и, фактически, решается без них эффективнее.
def get_divcount(n):
divcount = 0
for number in range(2, n // 2 + 1):
if not n % number:
divcount += 1
return divcount
max_number, max_divcount = 0, 0
# range -- работает только для Z (множества целых чисел)
# поэтому верно следующее:
# range(a, b) <=> [a, b)
# range(a, b + 1) <=> [a, b]
for number in range(84052, 84130 + 1):
divcount = get_divcount(number)
if divcount > max_divcount:
max_number, max_divcount = number, divcount
print("Делители:", max_divcount)
print("Число:", max_number)