求各位帮慢看看这个简单的问题,数字转列表!
写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==>result = []
def get_digits(n):
if n:
get_digits(n//10)
result.append(n%10)
get_digits(12345)
print(result)
数字改成列表这道题我这么写的逻辑上不通啊,结果怎么对呢,麻烦各位大神帮看看! ?逻辑上为什么不通呢
每次把n去除一位,直到没有,然后依次添加去除的数。 result = []
def get_digits(n):
if n: #参数不为0的时候判断为true(等价于:if n!=0:)
get_digits(n//10)#地板除10,相当于去掉最后一位数(递归,直到n为0)
result.append(n%10) #取余10,得到最后一位数,调用append加入列表
get_digits(12345)
print(result)
用 get_digits(123) 举个例子,get_digits(12345) 同理,如下:
get_digits(123) --> n = 123 --> if 123: 符合条件执行 if 代码块 --> get_digits(123//10) --> get_digits(12) 进入第一次递归
get_digits(12) --> n = 12 --> if 12: 符合条件执行 if 代码块 --> get_digits(12//10) --> get_digits(1) 进入第二次递归
get_digits(1)--> n = 1 --> if 1: 符合条件执行 if 代码块 --> get_digits(1//10) --> get_digits(0) 进入第三次递归
get_digits(0)--> n = 0 --> if 0: 不符合条件执行 if 代码块 --> 开始返回 --> get_digits(1) 返回第三次递归
get_digits(1) --> result.append(1%10) --> result = --> get_digits(12) 返回第二次递归
get_digits(12) --> result.append(12%10) --> result = --> get_digits(123) 返回第一次递归
get_digits(123) --> result.append(123%10) --> result =
你的get_digits不是纯函数 所以逻辑更难理解可以改成依靠return的函数 def change(n):
for i in n:
list1.append(i)
return(list1)
list1=[]
num=123456
change(str(num))
print(list1)
页:
[1]