鱼C论坛

 找回密码
 立即注册
查看: 1661|回复: 8

[已解决]关于024讲的课后题有点不明白,求教

[复制链接]
发表于 2017-9-30 18:06:20 | 显示全部楼层 |阅读模式

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

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

x
课后题第二题,把数字每一位放到一个列表里,我看了第一题的答案想仿照着写一下,可是总有问题,下面是我思路最清晰的一次,但是没有返回值,大神帮我看看是怎么回事啊
  1. def get_digits(n):
  2.     b = []
  3.     if n >= 10:
  4.         r = get_digits(n // (10**(int(len(str(n))-1))))
  5.         return b.extend([n % (10**(int(len(str(n))-1))),r])
  6.     elif 0 < n < 10:
  7.         r = n
  8.         b.append(r)
  9.         return b
  10.    
  11. print(get_digits(12345))
复制代码
最佳答案
2017-10-1 19:12:03
蓝色披风 发表于 2017-10-1 18:42
可以是可以,可是这样我也能写出来啊,我就是想不把12345化为字符串,而是就作为一个数字处理可不可以做 ...

那这样满意不?
  1. def get_digits(n):
  2.     numList=[]
  3.     while n:
  4.         numList.insert(0,n%10)
  5.         n //= 10         
  6.     return numList
  7. print(get_digits(12345))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-9-30 20:13:53 | 显示全部楼层
实现就行了???
这样可否:

  1. def get_digits(n):
  2.     return [int(i) for i in str(n)]

  3. print(get_digits(12345))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-1 18:42:59 | 显示全部楼层
ba21 发表于 2017-9-30 20:13
实现就行了???
这样可否:

可以是可以,可是这样我也能写出来啊,我就是想不把12345化为字符串,而是就作为一个数字处理可不可以做到,结果失败了,我想问问大神将12345作为数字处理可不可以用递归做到这个结果啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-1 19:12:03 | 显示全部楼层    本楼为最佳答案   
蓝色披风 发表于 2017-10-1 18:42
可以是可以,可是这样我也能写出来啊,我就是想不把12345化为字符串,而是就作为一个数字处理可不可以做 ...

那这样满意不?
  1. def get_digits(n):
  2.     numList=[]
  3.     while n:
  4.         numList.insert(0,n%10)
  5.         n //= 10         
  6.     return numList
  7. print(get_digits(12345))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-1 19:59:49 | 显示全部楼层
ba21 发表于 2017-10-1 19:12
那这样满意不?

不好意思啊,当我看到你真的回我帖子的时候,我挺感动的,想给你最佳答案,可是你现在给我的这个结果不是用递归写的啊。。。。我是想知道用递归这个怎么写。。很困扰。。可能我有点强迫症,但是你这个样子的程序是我在走投无路的情况下提交给课后题的答案,也就是没用递归的算法,也就是这个我也可以写出来。你帮我再想想,这个东西我要不化成字符串的形式,又要保持递归的算法,我应该怎么写程序?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-1 20:03:41 | 显示全部楼层
蓝色披风 发表于 2017-10-1 19:59
不好意思啊,当我看到你真的回我帖子的时候,我挺感动的,想给你最佳答案,可是你现在给我的这个结果不是 ...

递归是个好想法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-1 20:25:03 | 显示全部楼层
  1. result = []
  2. def get_digits(n):
  3.     if n > 0:
  4.         result.insert(0, n%10)
  5.         get_digits(n//10)
复制代码

这个?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-1 22:13:37 | 显示全部楼层

这个是正确答案,不过这个的思路确实值得学习。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-1 22:14:28 | 显示全部楼层
ba21 发表于 2017-10-1 20:03
递归是个好想法。

麻烦你了,回复了我这么多次,最佳答案就给你吧,而且你也回复了我好几次的问题了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-2 20:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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