python课后作业
def get_digits(n):list1 = []
if n>0:
list1.append(n%10)
return list1
get_digits(n//10)
num = int(input("请输入一个数字:"))
print(get_digits(num))
1. 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==> 这个是原题
我本来想的是每次%10取余数,然后添加到列表的最后, 但是这么打印结果确只有一个数字,
get_digits(12345)返回 应该怎么修改那
修改了两处
list1 = []#这个放到函数外面 ,避免覆盖
def get_digits(n):
if n>0:
list1.append(n%10)
# return list1
get_digits(n//10)
return list1 #返回要放在最后
num = int(input("请输入一个数字:"))
print(get_digits(num))测试结果:
请输入一个数字:12345
本帖最后由 昨非 于 2021-2-21 20:39 编辑
分析:
如果你的list1=[]放在函数内,那么每调用一次函数,就会重新把列表清空,所以最后只剩下一个数字
返回值放在最后,原因在于只有执行完if语句(n不满足:n>0)才能证明所有位数都被处理完了
(说明,之所以列表里顺序是反的,是因为你调用append函数时,n%10,对十取余得到的是最后一位,
而append函数本身又是在列表末尾添加,因此,执行完所有之后,整个列表的顺序是反的) list1 = []
def get_digits(n):
if n>0:
list1.insert(0,n%10)
get_digits(n//10)
return list1
num = int(input("请输入一个数字:"))
print(get_digits(num))修改了下 因为要按顺序输出,把append改成了insert 这样后计算出的数字放在列表的前边
代码小白liu 发表于 2021-2-21 20:41
修改了下 因为要按顺序输出,把append改成了insert 这样后计算出的数字放在列表的前边
对的,insert函数可以前插的 问题解决了记得设置最佳答案哦 围观 我有另外一个思路,把输入的数字转化成列表,然后将列表中每个元素转化为数字即可。
def get_digit(n):
list_temp=list(n)#将输入的数字转化为列表
print(list_temp)
list1= [] #设置一个空的列表,用来保存结果
for i in list_temp:
list1.append(eval(i))
return list1
num=str(input('请输入一个数字:'))
result=get_digit(num)
print(result)
输出的结果和楼主要的结果是一致的 atai0622 发表于 2021-2-21 22:31
我有另外一个思路,把输入的数字转化成列表,然后将列表中每个元素转化为数字即可。
输出的结果和楼主要 ...
这个思路也蛮好的
页:
[1]