Помощь с функцией в Python
Всем привет! Пытаюсь написать функцию, которая бы:
- В случае если число кратно 7 говорила, что число кратно 7.
- Если число не кратно 7, возвращала бы ближайшее к этому кратное 7, и писала "Ближайшее к вашему числу, кратное 7 - это .." . ну или как-то так.
У меня никак не получается сделать так, чтобы при нахождении ближайшего кратного числа, интерпретатор писал бы нужную фразу =\
Вот до чего я додумался пока что:
def cratn(n):
c = 0
if n % 7 == 0:
print('Число', n, 'и так кратно 7ми')
if n % 7 == 0 and 0 < c < 7:
print('Ближайшее к этому числу, число:', n)
else:
c += 1
return cratn(n+1)
Счётчик с я ввёл, чтобы отличать изначально введённое число, от ближайшего...по-другому, не могу никак реализовать =\
Заранее большое спасибо!
Ответы (2 шт):
Автор решения: вася
→ Ссылка
def cratn(n):
if n % 7 == 0:
print('Число', n, 'и так кратно 7ми')
else:
left = (n // 7) * 7
right = left + 7
n = left if n - left < right - n else right
print('Ближайшее к этому числу, число:', n)
cratn(14)
cratn(17)
cratn(18)
Автор решения: Михаил Муругов
→ Ссылка
def cratn(n, to=7):
mod = n % to # Находим остаток
if mod == 0: # Если число кратно 7
print(f'Число {n} кратно {to}')
else:
nearest = n - mod # Вычитаем остаток
if mod > to / 2: # Если остаток больше половины числа
nearest += to # Добавляем целое число, иначе nearest уже является ближайшим
print(f'Ближайшее кратное {to} число к {n}: {nearest}')