鱼C论坛

 找回密码
 立即注册
查看: 895|回复: 6

[已解决]第023、024讲:递归中的课后测试题求助

[复制链接]
发表于 2020-6-2 18:44:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求助
第023、024讲:递归中的课后测试题如下,我编写的程序中有一点问题,希望大神能帮忙看一下,问题到底出在哪里了,谢谢

题目:写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==> [1, 2, 3, 4, 5]

我的代码:

def get_digits(x):
    empty =[]
    if x // 10 < 1:
        empty.append(x)
    else:
        empty.insert(0,x % 10)
        empty.insert(0,get_digits(int(x / 10)))
    return empty
x = int(input('请输入数x:'))
result = get_digits(x)
print(result)

运行得到的结果如图所示,每次向空列表中插入的应该是元素,但是我得到的结果是插入了一个个列表,我不太知道问题出在哪里了
最佳答案
2020-6-2 19:20:03
else 中的第二句,insert插入的是get_digits的返回值,而函数的返回值就是列表,所以就出问题了。
应该用extend,将一个列表的所有元素追加到列表后面
手机编辑,代码可能会有缩进问题。
def get_digits(x):
    empty =[]
    if x // 10 < 1:
        empty.append(x)
    else:
        empty.extend(get_digits(int(x / 10)))
        empty.append(x % 10)
    return empty
1591094583(1).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-2 19:02:18 | 显示全部楼层
每次递归过程中,会生成一个新的列表。

def get_digits(x, empty=None):
    if empty is None: empty = list()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 19:16:20 | 显示全部楼层
因为递归 get_digits(int(x / 10)) 时候是返回的一个列表 而不是元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 19:20:03 | 显示全部楼层    本楼为最佳答案   
else 中的第二句,insert插入的是get_digits的返回值,而函数的返回值就是列表,所以就出问题了。
应该用extend,将一个列表的所有元素追加到列表后面
手机编辑,代码可能会有缩进问题。
def get_digits(x):
    empty =[]
    if x // 10 < 1:
        empty.append(x)
    else:
        empty.extend(get_digits(int(x / 10)))
        empty.append(x % 10)
    return empty
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-2 19:25:40 | 显示全部楼层
因为你每次递归的时候,都会重新创建一个empty空列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-2 20:15:59 | 显示全部楼层
非常感谢的大家的解答, 已经明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-2 20:16:52 | 显示全部楼层
sunrise085 发表于 2020-6-2 19:20
else 中的第二句,insert插入的是get_digits的返回值,而函数的返回值就是列表,所以就出问题了。
应该用e ...

非常感谢大神,已经搞明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 22:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表