yojhoo 发表于 2021-11-25 12:20:41

python 0基础第23.24讲例题1的问题

例题是:写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==>
def fun1(n):
      result = []      
      
      if n:
                result.insert(0,n%10)
      
                fun1(n//10)
               
                return result
x = int(input('请输入一个整数:'))
result = fun1(x)
print(result)

为什么这样做的结果输出只有最后一位呢?应该怎么样改?谢谢各位大神了

梦回连营 发表于 2021-11-25 12:52:46

def fun1(n):
    result = []         
    while n:
      result.insert(0,n%10)
      n //= 10      
    return result

yojhoo 发表于 2021-11-25 13:33:31

梦回连营 发表于 2021-11-25 12:52


请问如果用递归该怎么改?

jackz007 发表于 2021-11-25 14:14:27

本帖最后由 jackz007 于 2021-11-25 14:16 编辑

yojhoo 发表于 2021-11-25 13:33
请问如果用递归该怎么改?

d = []
def digits(n):
    if n :
      digits(n // 10)
      d . append(n % 10)
digits(int(input('请输入一个整数 : ')))
print(d)
      运行实况:
D:\00.Excise\Python>python x.py
请输入一个整数 : 135798642


D:\00.Excise\Python>

yojhoo 发表于 2021-11-25 14:36:35

jackz007 发表于 2021-11-25 14:14
运行实况:

请教,能告诉我,我写的问题出在哪里吗?

jackz007 发表于 2021-11-25 14:46:52

yojhoo 发表于 2021-11-25 14:36
请教,能告诉我,我写的问题出在哪里吗?

      你的代码已作修改
def fun1(n):
    result = []      
    if n:
      result = fun1(n // 10)
      result . append(n % 10)
    return result

print(fun1(int(input('请输入一个整数:'))))

yojhoo 发表于 2021-11-26 09:16:35

jackz007 发表于 2021-11-25 14:46
你的代码已作修改

万分感激~
页: [1]
查看完整版本: python 0基础第23.24讲例题1的问题