请问这两个程序有什么区别,看了一下午,实在找不出来。
第一个:lists = []
def get_digits(n):
if n>0:
get_digits(n // 10)
lists.append(n % 10)
return lists
else:
return lists
print(get_digits(12345))
第二个:
lists = []
def get_digits(n):
if n>0:
get_digits(n // 10)
return lists.append(n % 10)
else:
return lists
print(get_digits(12345)) 这是关于递归的知识 就是写在一起,但顺序会变 lists.append(n % 10)
列表方法是作用于列表本身的,会返回None
所以这里不能写
return lists.append(n % 10)
而要写
lists.append(n % 10)
return lists 本帖最后由 ch1161741637 于 2021-8-19 21:34 编辑
逃兵 发表于 2021-8-19 20:26
lists.append(n % 10)
列表方法是作用于列表本身的,会返回None
我把每次的迭代都打印出来了,前四次迭代都正常【1,2,3,4】,但最后一次输出列表为什么是none,能解释的再详细点吗?万分感谢 本帖最后由 大马强 于 2021-8-19 22:37 编辑
ch1161741637 发表于 2021-8-19 21:33
我把每次的迭代都打印出来了,前四次迭代都正常【1,2,3,4】,但最后一次输出列表为什么是none,能解释 ...
这就涉及到了函数的返回值问题
这时候你肯定再想,我这个get_digits 不是有返回值lists.append(n % 10)吗?
但你再想一想 列表函数append的返回值是啥?
答案如同楼上大佬都说的,列表的append方法是没有任何返回的
你可以尝试这段代码
print(lists.append(1))
结果是 none
这就证明了 列表的append无返回值
所以你外面的print接受了个空气,就打印了none 大马强 发表于 2021-8-19 22:18
这就涉及到了函数的返回值问题
这时候你肯定再想,我这个get_digits 不是有返回值lists.append(n % 10) ...
明白了,append操作的确无返回值,所以return当然没有东西,谢谢哈 ch1161741637 发表于 2021-8-21 15:27
明白了,append操作的确无返回值,所以return当然没有东西,谢谢哈
{:10_297:}不客气
页:
[1]