|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是:1. 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==> [1, 2, 3, 4, 5]
- def get_digit(n):
- result = []
- if n:
- a = get_digit(n//10)
- result = a + result.insert(0,n%10)
- return result
- else:
- return result
-
- n = int(input('请输入数字:'))
- get_digit(n)
复制代码
这个代码跑起来报错的内容是:TypeError: can only concatenate list (not "NoneType") to list
想问一下哪里有问题?
本帖最后由 聂嘉辉 于 2020-10-24 19:12 编辑
给个最佳答案呗!
result.insert(0,n%10)返回的是None,不是增加后的列表。
改成这样。
result.insert(0,n%10)
result = a + result
分开写。
添加是在原列表上添加,不是返回添加后的列表。
- def get_digit(n):
- result = []
- if n:
- a = get_digit(n//10)
- result.insert(0,n%10)
- result = a + result
- return result
- else:
- return result
-
- n = int(input('请输入数字:'))
- print(get_digit(n))
复制代码
如:
- a=[]
- print(a.insert(0,'test'))
复制代码
返回的就是None。如果要获取列表请print(result)
附录:
还有好几种方法呢。如for循环版:
- def get_digit(n):
- result = []
- for i in n:
- result.append(i)
- return result
- n = input('请输入数字:')
- print(get_digit(n))
复制代码
递归调用版:
- def get_digit(n, result = []):
- if len(n) == 0:
- return result
- result.append(n[0])
- return get_digit(n[1::], result)
复制代码
代码越简洁越好,不要那么麻烦。
新手建议先学会基础语法再学def、class等。
|
|