鱼C论坛

 找回密码
 立即注册
查看: 2013|回复: 7

[已解决]如何将一个列表作为函数参数,调用函数后返回该列表

[复制链接]
发表于 2018-3-2 10:01:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
定义了一个   求任何一个整数的各个数位上的数字    的函数,并将其存放到一个列表
def eachfigure(n,list):  //n为正整数,list为一个空列表
    while n > 9:
        a = n % 10   //第一次分离个位,将个位上的数值赋给a,第二次分离十位,第三次百位
        list + [a]       //将a转换成列表格式,连接到空列表list
        n = n // 10   //去除n的个位,进入下个循环
    list.reverse()     //由于list中数位的存放顺序是个位在最前,与习惯相反,故将列表逆序
    return list
n = int(input())
list = []
eachfigure(n)
for i in list:
    print(i, end=' ,')
运行之后显示
   TypeError: eachfigure() missing 1 required positional argument: 'list'
最佳答案
2018-3-2 10:11:03
无需列表作为参数,直接return一个列表就可以了。
另:最好不要用list、str,int等作为变量名。
  1. def eachfigure(n):
  2.     list1 = []
  3.     while n:
  4.         a = n % 10
  5.         list1.append(a)      
  6.         n = n // 10   
  7.     list1.reverse()     
  8.     return list1
  9. n = int(input())
  10. list1 = eachfigure(n)
  11. for i in list1:
  12.     print(i, end=' ,')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-2 10:04:47 | 显示全部楼层
发错了= =,主函数调用定义函数的时候是  eachfigure(n,list) ,这边打错了,不过更正之后还是运行不起来,没有错误提示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-2 10:11:03 | 显示全部楼层    本楼为最佳答案   
无需列表作为参数,直接return一个列表就可以了。
另:最好不要用list、str,int等作为变量名。
  1. def eachfigure(n):
  2.     list1 = []
  3.     while n:
  4.         a = n % 10
  5.         list1.append(a)      
  6.         n = n // 10   
  7.     list1.reverse()     
  8.     return list1
  9. n = int(input())
  10. list1 = eachfigure(n)
  11. for i in list1:
  12.     print(i, end=' ,')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-2 10:11:28 From FishC Mobile | 显示全部楼层
添加元素用append
函数定义的时候根本不需要形参lst,直接在函数内部定义即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-2 10:19:26 | 显示全部楼层
你的list不是全局变量出了那个while循环就没有用了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-2 10:25:15 | 显示全部楼层
南城顾她 发表于 2018-3-2 10:19
你的list不是全局变量出了那个while循环就没有用了

毕竟python没有指针啊,我也很绝望啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-2 10:27:53 | 显示全部楼层
冬雪雪冬 发表于 2018-3-2 10:11
无需列表作为参数,直接return一个列表就可以了。
另:最好不要用list、str,int等作为变量名。

谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-2 10:32:38 | 显示全部楼层
  1. #  直接先把数字转换为字符串,然后把字符串的每个字符转换为数字,就可以得到所求列表了。
  2. # 下面的getList1 和 getList2方法等价。

  3. def getList1(number):
  4.     return [int(i) for i in str(number)]


  5. print(getList1(123131))  #  --> [1, 2, 3, 1, 3, 1]
  6. print(getList1(156568921)) #  --> [1, 5, 6, 5, 6, 8, 9, 2, 1]
  7. print(getList1(898523))  #  -->[8, 9, 8, 5, 2, 3]

  8. def getList2(number):
  9.     number = str(number)
  10.     result = []
  11.     for i in number:
  12.         i = int(i)
  13.         result.append(i)
  14.     return result

  15. print(getList2(123131))  #  --> [1, 2, 3, 1, 3, 1]
  16. print(getList2(156568921)) #  --> [1, 5, 6, 5, 6, 8, 9, 2, 1]
  17. print(getList2(898523))  #  -->[8, 9, 8, 5, 2, 3]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-8 02:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表