Уведомления

Группа в Telegram: @pythonsu

#1 Июль 12, 2021 13:03:24

artemu88
Зарегистрирован: 2021-07-12
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка unsupported operand type(s) for +: 'int' and 'NoneType'

Всем привет!
Только начинаю учить 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))




Офлайн

#2 Июль 12, 2021 14:38:49

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Ошибка unsupported operand type(s) for +: 'int' and 'NoneType'

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, чтобы программа корректно завершалась

Отредактировано Ocean (Июль 12, 2021 14:39:16)

Офлайн

#3 Июль 12, 2021 19:46:53

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2730
Репутация: +  183  -
Профиль   Отправить e-mail  

Ошибка unsupported operand type(s) for +: 'int' and 'NoneType'

http://python.su/forum/topic/37039/?page=1#post-200655



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Июль 13, 2021 00:14:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9795
Репутация: +  849  -
Профиль   Отправить e-mail  

Ошибка unsupported operand type(s) for +: 'int' and 'NoneType'

  
>>> 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
>>>



Офлайн

#5 Июль 13, 2021 17:58:11

artemu88
Зарегистрирован: 2021-07-12
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка unsupported operand type(s) for +: 'int' and 'NoneType'

Всем большое спасибо! Разобрался!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version