与#x2018;打印’;和‘;返回’;用Python

与#x2018;打印’;和‘;返回’;用Python,python,python-3.x,Python,Python 3.x,我想使用递归计算列表值之和,但使用sum2函数时出错:TypeError:不支持+的操作数类型:'int'和'NoneType' def sum(list): if list == []: return 0 else: return list[0] + sum(list[1:]) print(sum([1,2,3])) def sum2(list): if list == []: return 0 else

我想使用递归计算列表值之和,但使用sum2函数时出错:TypeError:不支持+的操作数类型:'int'和'NoneType'

def sum(list):
    if list == []: 
        return 0 
    else:
        return list[0] + sum(list[1:])
print(sum([1,2,3]))

def sum2(list):
    if list == []: 
        return 0 
    else:
        print(list[0] + sum(list[1:]))
sum([1,2,3])
print()
通过标准输出将输出发送到控制台<代码>返回将输出发送到调用函数的任何对象。如果要使用递归,则需要使用return语句,而不是
print()

下面是一个例子:

def sum2(l):
    if l == []:
        return 0
    else:
        return l[0] + sum2(l[1:])

sum2([1, 2, 3])
# 6

这是递归的,因为return语句包含对函数本身的调用。一般来说,在计算机科学课上学习是件好事,但在生产代码中学习是件坏事。

通过查看您的代码,我不明白您的要求是什么,但据我所知,您需要知道打印返回之间的区别


print
是一个需要打印描述和打印变量或对象的函数。此函数将帮助开发人员调试和检查控制台输出。其中as
return
是一个关键字,它将在任何函数或方法中使用,以从该函数或方法向其调用者返回一些值。

sum2
不返回任何内容在python 3中是一个打印到控制台的函数。是一种语句类型,用于结束函数的执行并将指定的值返回给调用该函数的人。但是你的问题并不是关于这个,而是关于如何使用递归打印和返回有什么区别?就像问橙色和飞机有什么区别一样?他们根本不是一回事。思考单词本身的意思;你归还一本借来的书并打印一封信。查找Python教程;在@KenWhite上有一个列表,其中有许多是可以使用的,我感觉到你的痛苦,但这是一个非常常见的初学者问题,特别是考虑到教程的开始方式:
print()
ing让初学者在控制台中看到的东西。直接回答很容易,没有恼怒的语气:)这回答了你的问题吗?