Деление в интервале
Всем привет!
Надо создать программу, которая будет считать все цифры в интервале(в определённом интервале, которую будет вводить пользователь, следовательно еще нужен input()), которые будут делится на 4. Потом надо будет посчитать сумму эти чисел в интервале, которые делятся на 4. И также важно было чтобы программа проверяла, делится ли число на 4 без остатка.( с остатком не годится).
Обязательно нужно иcпользовать функцию def, if statement и (while loop).
Пока мой код выглядит так:
x = int(input("Ievadi pirmo skaitli"))
y = int(input("Ievadi otro skaitli"))
while (x != y):
if (x % 4 > 0):
x = x + 1
else:
a = x```
Ответы (1 шт):
Если я правильно понял задачу (а я не уверен, что понял правильно), то
пользователь должен ввести минимальное и максимальное число (диапазон)
в указанном диапазоне выбираются числа, которые кратны 4
вычисляется сумма данных чисел
Если так, кроме того еще требуется использовать while, if и def, то код может выглядеть так:
def calc_sum(left, right):
res = 0
value = left
while value <= right:
if value % 4 == 0:
res += value
value += 1
return res
left = int(input('введите левую часть диапазона: '))
right = int(input('введите правую часть диапазона: '))
print("результат:", calc_sum(left, right))
или все таки надо подсчитать сумму цифр чисел, кратных 4?
P.S.
чтобы вводить границы не диапазона в одном запросе, а не в двух, можно сделать такой код:
def calc_sum(borders):
res = 0
value = borders[0]
while value <= borders[1]:
if value % 4 == 0:
res += value
value += 1
return res
borders = list(map(int, input('введите диапазон: ').split()))
print("результат:", calc_sum(borders))
тогда ввести можно сразу
10 20
А вообще эта задача может быть решена в 1 строку
borders = list(map(int, input('введите диапазон: ').split()))
res = sum([i for i in range(borders[0], borders[1] + 1) if i % 4 == 0])
print("результат:", res)
Однако если разговор все таки шел о подсчёте суммы цифр в числах, кратных 4, то тогда можно использовать функцию:
def sum_digits(num):
res = 0
value = abs(num)
while value > 0:
res += value % 10
value //= 10
return res