@sweetpepper

Легкая программка на питоне. Где я ошибся?

Недавно изучаю программирование, попробовал решить легкую задачу

Уникальным назовём число, если у него только первые две цифры нечётные. Для интервала [57888;74555] найдите количество таких чисел, которые не делятся на 7, 9, 13, и разность максимального и минимального из них. В ответе укажите два числа: сначала количество чисел, а потом разность.

mass = []
count = 0
for i in range(57888, 74556):
    if i % 7 !=0 and i % 9 !=0 and i % 13 != 0 and ((i//10000)*((i//1000)%10))%2 != 0:
        mass.append(int(i))
        count+=1
print (count,(max(mass)-min(mass)))

Вывод 2189 16108

А должен быть 262 14888

Подскажите, пожалуйста где я ошибся.
  • Вопрос задан
  • 2048 просмотров
Решения вопроса 2
@o5a
только первые две цифры нечётные
Ответ написан
adugin
@adugin Куратор тега Python
Нужно проверять все цифры, а не только первые две. И писать код, который понятен даже без комментариев:
def criterion(number, denominators=[7, 9, 13], parity_mask=[1, 1, 0, 0, 0]):
    if all(number % denominator != 0 for denominator in denominators):
        if [int(digit) % 2 for digit in str(number)] == parity_mask:
            return True
    return False

numbers = list(filter(criterion, range(57888, 74555 + 1)))

print(len(numbers), max(numbers) - min(numbers))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы