鱼C论坛

 找回密码
 立即注册
查看: 957|回复: 5

[已解决]第23讲第二题关于列表值返回的问题

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

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

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

x
写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==> [1, 2, 3, 4, 5]
各位大佬,代码如下,感谢各位大佬解答!

list1=[]

def get_digits(n):
    if n<0:
            print("请重新输入大于等零的整数!")
    elif n<10:
            list1.append(n)
            return n
    else:
            list1.append(n%10)
            return get_digits(n//10)
    list1.reverse()                                                #第一个问题:为什么list1中元素没有翻转     
                                                                       #第二个问题:如果加上 return list1
while 1:                                                                                 while 1:  
    number=int(input('输入数值:'))                                         number=int(input('输入数值:'))                                         
    result=get_digits(number)                                                  result=get_digits(number)
    print(list1)                           
    list1.clear()                                                                        为何返回值是1

输出结果:
输入数值:123456
[6, 5, 4, 3, 2, 1]
最佳答案
2020-6-4 18:23:46
#第一个问题:为什么list1中元素没有翻转     

因为执行不到  list1.reverse()    你前面的条件语句都有设置 return ,当代码运行到return 后就不在执行 该函数的代码了
#第二个问题:如果加上 return list1 为什么返回值是 1

因为你没有递归 只加入了第一次 list1.append(n%10) 的值进入列表 导致你只返回一个值

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 18:23:46 | 显示全部楼层    本楼为最佳答案   
#第一个问题:为什么list1中元素没有翻转     

因为执行不到  list1.reverse()    你前面的条件语句都有设置 return ,当代码运行到return 后就不在执行 该函数的代码了
#第二个问题:如果加上 return list1 为什么返回值是 1

因为你没有递归 只加入了第一次 list1.append(n%10) 的值进入列表 导致你只返回一个值

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

使用道具 举报

 楼主| 发表于 2020-6-4 18:28:44 | 显示全部楼层
Twilight6 发表于 2020-6-4 18:23
因为执行不到  list1.reverse()    你前面的条件语句都有设置 return ,当代码运行到return 后就不在执行 ...

感谢大佬!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 18:29:18 | 显示全部楼层

客气了~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-4 18:48:49 | 显示全部楼层

list1=[]

def get_digits(n):
    if n<0:
            print("请重新输入大于等零的整数!")
    elif n<10:
            list1.append(n)
            return n
    else:
            list1.append(n%10)
            return get_digits(n//10)
    return list1        #大佬,还是没搞懂。应该是返回最后一个 return get_digits(n//10)才执行return list1啊

while 1:
    number=int(input('输入数值:'))
    result=get_digits(number)
    print(result)
    list1.clear()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 18:53:25 | 显示全部楼层
吃鲸不放辣 发表于 2020-6-4 18:48
list1=[]

def get_digits(n):

函数 只要遇到 return 就不会继续执行下面的代码 ,不可能执行了return get_digits(n//10) 又执行了return list1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 05:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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