0基础入门python_第23、24讲第1题
1. 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==>def fun1(a):
result = []
if a:
result = fun1(a // 10)
return result.append(a%10)
else:
return []
a = int(input("输入:"))
fun1(a)
这是我写的,有两个问题
1、为什么报错为
Traceback (most recent call last):
File "C:\Users\asus\Desktop\guishi.py", line 10, in <module>
fenfen(a)
File "C:\Users\asus\Desktop\guishi.py", line 4, in fenfen
result = fenfen(a // 10)
File "C:\Users\asus\Desktop\guishi.py", line 4, in fenfen
result = fenfen(a // 10)
File "C:\Users\asus\Desktop\guishi.py", line 5, in fenfen
return result.append("a%10")
AttributeError: 'NoneType' object has no attribute 'append'
2、这个代码思路行的通吗,如果不行,怎么修改
行不通,因为 result.append() 方法没有返回值,而且 result 不能放在函数体内。
帮你修改了:
result = []
def fun1(a):
if a:
# 将 a % 10 添加到列表的头部
result.insert(0, a % 10)
fun1(a // 10)
else:
return
a = int(input("输入:"))
fun1(a)
print(result) 如果不用全局变量,可以这样写。
def fun1(a):
if a:
return [*fun1(a // 10), a % 10]
else:
return []
有一个问题就是当a为0时,应该返回,但现在返回的是[] zltzlt 发表于 2020-2-1 17:44
行不通,因为 result.append() 方法没有返回值,而且 result 不能放在函数体内。
帮你修改了:
为什么result不能放在函数体内呢
第0题的答案result就在函数体内
"""十进制转二进制"""
def Dec2Bin(dec):
result = ''
if dec:
result = Dec2Bin(dec//2)
return result + str(dec%2)
else:
return result
print(Dec2Bin(62))
我就是猛辣 发表于 2020-2-1 19:03
为什么result不能放在函数体内呢
第0题的答案result就在函数体内
我也想不明白为什么result不能放在函数体内啊 我就是猛辣 发表于 2020-2-1 19:03
为什么result不能放在函数体内呢
第0题的答案result就在函数体内
我明白了。result=[]可以在里面的,但是不能用return result + str(dec%2)。result + str(dec%2)这个代码的意思是用append对result做修改,要单独写,然后再return result,这就行了。关于代码内result是否会每次清空的问题,其实不影响,因为我的理解,这个递归到最后一次是你的a等于0了,进入了else这边得到了一个函数值为空列别,然后递归往前推一次的时候,进入if条件,最后一次得到的空列表往后append一个数字。
def formlist(x):
result = []
if x>0:
result = formlist(x // 10)
result.append(x % 10)
return result
else:
return result
temp = int(input('Enter a number: '))
print(formlist(temp))
这样就是OK的,问题就是输入0的时候得到空列表 冬雪雪冬 发表于 2020-2-1 18:06
如果不用全局变量,可以这样写。
有一个问题就是当a为0时,应该返回,但现在返回的是[]
这个*号是什么意思呀?
这个函数要在互动窗口调用才行,在里面print(fun1(12345))会返回None,为啥会这样? 这个*号是什么意思呀? ----*是解包,把一个列表变成多个参数,你可以对比一下不加*的效果
这个函数要在互动窗口调用才行,在里面print(fun1(12345))会返回None,为啥会这样?-----不会呀,我又运行了。
>>> print(fun1(12345))
页:
[1]