鱼C论坛

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

第二十三、二十四讲动动手第1题

[复制链接]
发表于 2018-8-12 22:05:28 | 显示全部楼层 |阅读模式

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

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

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

我想的是这样:
def get_digits(n):
    if n < 10:
        return list(map(int, str(n)))
    else:
        result_list = list(map(int, str(n-n//10*10)))
        result_list.insert(0,(get_digits(n//10)[0]))
        return result_list

但是经过测试发现,中间数位的数字的函数结果都为空。

删掉最后一行return语句,对多位数字执行这个函数的时候,程序会提示:
line 6, in get_digits
    result_list.insert(0,(get_digits(n//10)[0]))
  [Previous line repeated 2 more times]
TypeError: 'NoneType' object is not subscriptable

我不知道为什么会是空对象,麻烦大牛解答一下~万谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-8-12 22:08:30 | 显示全部楼层
return 语句删除之前,只会返回含有首末两位数字的列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-12 22:09:04 | 显示全部楼层
你是故意加大难度才用这个思路的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-12 22:49:49 | 显示全部楼层
你这逻辑好麻烦,result_list = list(map(int, str(n-n//10*10)))返回的是n的个位
result_list.insert(0,(get_digits(n//10)[0]))将n地板除带入返回
每次相当于只带第一位,其他位依次递归直到n的个位

按你的思路应该这么写
def get_digits(n):
    if n < 10:
        return list(map(int, str(n)))
    else:
        result_list = list(map(int, str(n-n//10*10)))
        result_list=get_digits(n//10)+result_list
        return result_list
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-13 15:36:46 | 显示全部楼层
lvvly 发表于 2018-8-12 22:09
你是故意加大难度才用这个思路的吗

嗯……应该是因为对某些函数的用法不熟悉,想不到用,所以只想到了这种思路(捂脸
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-13 20:58:14 | 显示全部楼层
def get_digits(n):
    res=[]
    if n < 10:
        res.append(int(n))
        return res
    else:
        s = str(n)
        for i in s:
            res.append(int(i));
    return res
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-14 14:28:49 | 显示全部楼层

哈哈哈,我以为这道题也要用递归做
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 08:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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