鱼C论坛

 找回密码
 立即注册
查看: 1727|回复: 8

[已解决]关于python中*param的用法有点问题求助

[复制链接]
发表于 2020-6-4 17:40:39 | 显示全部楼层 |阅读模式

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

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

x
请问大家,函数定义是用收集参数*param时,在调用的时候能否直接输入一个列表?入门,请大家帮忙!!!
例如:
def a(*param):
        length = len(param)
        for i in range(length):
                print(param[i])
                print('adsad')

list = [1, 2, 3, 4, 5]
a(list)

难道:
a(1, 2, 3, 4, 5)
只能这样用吗?
最佳答案
2020-6-4 17:52:29
hlsxiannv 发表于 2020-6-4 17:48
谢谢大佬的回复,可我想要的结果是list这个列表的每个数对应收集参数*param的每一个数,以下是我课后习题 ...

调用改成count(*list)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 17:41:42 | 显示全部楼层
当然可以,param的结果就是:
([1,2,3,4,5])
你如果想用这个列表得这样:
  1. list1 = param[0]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 17:42:05 | 显示全部楼层
可以的,参数你任意输入,主要是看你程序主要作用是什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-4 17:48:11 | 显示全部楼层
qiuyouzhi 发表于 2020-6-4 17:41
当然可以,param的结果就是:
([1,2,3,4,5])
你如果想用这个列表得这样:

谢谢大佬的回复,可我想要的结果是list这个列表的每个数对应收集参数*param的每一个数,以下是我课后习题的代码,第19讲动动手,请帮我看看,该怎么修改呢?
  1. def count(*param):
  2.     length = len(param)
  3.     for m in range(length):
  4.         letters = 0
  5.         spaces = 0
  6.         nums = 0
  7.         others = 0
  8.         for each in param[m]:
  9.             if each.isalpha():
  10.                 letters += 1
  11.             elif each.isdigit():
  12.                 nums += 1
  13.             elif each == ' ':
  14.                 spaces += 1
  15.             else:
  16.                 others += 1
  17.         print('第 %d 个字符串共有 %d 个英文字母, %d 个数字, %d 个空格, %d 个其他字符' %(m+1, letters, nums, spaces, others))

  18. a = 1
  19. i = 0
  20. list = []
  21. last = '#'
  22. while a:
  23.     string = str(input('请输入需要检查的所有字符串,回车键结束输入并开始输入下一个字符串,输入#结束所有输入:'))
  24.     list.append(string)
  25.     if last == list[i]:
  26.         print('输入结束!')
  27.         a = 0
  28.     i += 1
  29. count(list)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-4 17:49:29 | 显示全部楼层
Twilight6 发表于 2020-6-4 17:42
可以的,参数你任意输入,主要是看你程序主要作用是什么

谢谢大佬的回复,可我想要的结果是list这个列表的每个数对应收集参数*param的每一个数,以下是我课后习题的代码,第19讲动动手,请帮我看看,该怎么修改呢?
  1. def count(*param):
  2.     length = len(param)
  3.     for m in range(length):
  4.         zimus = 0
  5.         spaces = 0
  6.         nums = 0
  7.         others = 0
  8.         for each in param[m]:
  9.             if each.isalpha():
  10.                 zimus += 1
  11.             elif each.isdigit():
  12.                 nums += 1
  13.             elif each == ' ':
  14.                 spaces += 1
  15.             else:
  16.                 others += 1
  17.         print('第 %d 个字符串共有 %d 个英文字母, %d 个数字, %d 个空格, %d 个其他字符' %(m+1, zimus, nums, spaces, others))

  18. a = 1
  19. i = 0
  20. list = []
  21. last = '#'
  22. while a:
  23.     string = str(input('请输入需要检查的所有字符串,回车键结束输入并开始输入下一个字符串,输入#结束所有输入:'))
  24.     list.append(string)
  25.     if last == list[i]:
  26.         print('输入结束!')
  27.         a = 0
  28.     i += 1
  29. count(list)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 17:52:29 | 显示全部楼层    本楼为最佳答案   
hlsxiannv 发表于 2020-6-4 17:48
谢谢大佬的回复,可我想要的结果是list这个列表的每个数对应收集参数*param的每一个数,以下是我课后习题 ...

调用改成count(*list)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-4 17:54:54 | 显示全部楼层
qiuyouzhi 发表于 2020-6-4 17:52
调用改成count(*list)

谢谢谢谢,改好了!太感谢了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 17:59:24 | 显示全部楼层
  1. a(list)
复制代码

      用一个列表作为输入参数,那么,可变参数 param 这时就只代表一个输入参数,这个参数就是这个列表。
  1. a(1, 2, 3, 4, 5)
复制代码

      用 5 个参数作为输入参数,那么,可变参数 param 这时就代表着 5 个参数。与前者相比,显然,这种方式更加符合可变参数设定的用法。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-6 10:42:22 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 10:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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