Как правильно написать функцию, чтобы она считала сумму вводимых чисел
Я ввожу первое число, которое в свою очередь говорит мне сколько последующих цифр я хочу ввести с клавиатуры. Потом создаю функцию, чтобы посчитать сумму этих цифр:
def suma_digits_a(a):
for i in range(a):
x = int(input(' '))
s = x
s += x
print(s)
if __name__ == '__main__':
a = int(input('введите число: '))
print(suma_digits_a(a))
к примеру я ввожу число 3, потом числа 3, 3, 3 и должен получить сумму 9, а у меня они не суммируются.
Ответы (1 шт):
ошибка №1:
Функция suma_digits_a ничего не возвращает а когда функция в питоне ничего не возвращает, то считается, что она возвращает None
Однако вы выводите результат внутри функции, а затем делаете
print(suma_digits_a(a))
т.е. выводите результат работы функции suma_digits_a, т.е. None
Вам надо не выводить в функции сумму, а вернуть ее:
def suma_digits_a(a):
# ваш код
return sum
ошибка №2:
вы не вычисляете сумму, поскольку внутри цикла постоянно присваиваете сумме последнее значение
for i in range(a):
x = int(input(' '))
s = x
s += x
print(s)
в итоге таким подходом вы просто в конечном итоге удаиваете введенное значение
s = x
s += x
вынесете s из цикла
s = 0
for i in range(a):
x = int(input(' '))
s += x
непонятка №3
а зачем вам вот этот код?
if __name__ == '__main__':
P.S. Если не стоит задача сначала запросить сколько чисел будет, а затем вводить эти числа, то можно обойтись гораздо более короткими техниками:
получить все введенные в одной строке числа в массив через функцию
mapnums = [*map(int, input().split())]подсчитать сумму через функцию
reducefrom functools import reduce nums = [*map(int, input().split())] sum = reduce(lambda sum, value: sum + value, nums) print(sum)воспользоваться функцией
sum:nums = [*map(int, input().split())] res = sum(nums) print(sum)