Найти - Пользователи
Полная версия: Ошибка unsupported operand type(s) for +: 'int' and 'NoneType'
Начало » Python для новичков » Ошибка unsupported operand type(s) for +: 'int' and 'NoneType'
1
artemu88
Всем привет!
Только начинаю учить python по бесплатным курсам.
Решал задачу на рекурсию, где нужно написать функцию суммы последовательности.
Но возникает ошибка:
unsupported operand type(s) for +: ‘int’ and ‘NoneType’
Объясните, что я делаю не так?
Всем большое спасибо!

Код ниже, то что написал:

 def SumSequence(n):
    n = int(input())
    if n != 0:
        return n + SumSequence(n)
n = int(input())
print(SumSequence(n))




Ocean
artemu88


1) почему дважды n задается?
 n = int(input())
Нужно один раз это делать.
2) Имя функции не должно быть с прописной буквы. Это описано в PEP8. SumSequence- так именую классы. Функции sum_sequence.

3) TypeError: unsupported operand type(s) for +: ‘int’ and ‘NoneType’ возникает когда ты вводишь на очередном запросе 0
Условие не выполняется, значит питон не переходит к обработке строки return n + SumSequence(n) и функция возвращает None
Отсюда и возникает сложение integer с None которое выполнить нельзя. Это как складывать жаб и стулья.
Чтобы этого избежать, надо добавить ветку else, в которой определить что должна вернуть функция в случае, когда n=0

  
def SumSequence(n):
    n = int(input())
    if n != 0:
        return n + SumSequence(n)
    else:
        return 0
n = int(input())
print(SumSequence(n))
Код твой не правила, просто добавила else, чтобы программа корректно завершалась
Rodegast
http://python.su/forum/topic/37039/?page=1#post-200655
py.user.next
  
>>> def sumsequence(n):
...     if n != 0:
...         return n + sumsequence(n - 1)
...     return 0
... 
>>> def f():
...     n = int(input())
...     print(sumsequence(n))
... 
>>> f()
10
55
>>> f()
5
15
>>> f()
3
6
>>>
artemu88
Всем большое спасибо! Разобрался!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB