第23讲第二题关于列表值返回的问题
写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==>各位大佬,代码如下,感谢各位大佬解答!
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
#第一个问题:为什么list1中元素没有翻转
因为执行不到list1.reverse() 你前面的条件语句都有设置 return ,当代码运行到return 后就不在执行 该函数的代码了
#第二个问题:如果加上 return list1 为什么返回值是 1
因为你没有递归 只加入了第一次 list1.append(n%10) 的值进入列表 导致你只返回一个值
Twilight6 发表于 2020-6-4 18:23
因为执行不到list1.reverse() 你前面的条件语句都有设置 return ,当代码运行到return 后就不在执行 ...
感谢大佬! 吃鲸不放辣 发表于 2020-6-4 18:28
感谢大佬!
客气了~ Twilight6 发表于 2020-6-4 18:29
客气了~
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() 吃鲸不放辣 发表于 2020-6-4 18:48
list1=[]
def get_digits(n):
函数 只要遇到 return 就不会继续执行下面的代码 ,不可能执行了return get_digits(n//10) 又执行了return list1
页:
[1]