鱼C论坛

 找回密码
 立即注册
查看: 1515|回复: 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 17:41:42 | 显示全部楼层
当然可以,param的结果就是:
([1,2,3,4,5])
你如果想用这个列表得这样:
list1 = param[0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 17:42:05 | 显示全部楼层
可以的,参数你任意输入,主要是看你程序主要作用是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

a = 1
i = 0
list = []
last = '#'
while a:
    string = str(input('请输入需要检查的所有字符串,回车键结束输入并开始输入下一个字符串,输入#结束所有输入:'))
    list.append(string)
    if last == list[i]:
        print('输入结束!')
        a = 0
    i += 1
count(list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

a = 1
i = 0
list = []
last = '#'
while a:
    string = str(input('请输入需要检查的所有字符串,回车键结束输入并开始输入下一个字符串,输入#结束所有输入:'))
    list.append(string)
    if last == list[i]:
        print('输入结束!')
        a = 0
    i += 1
count(list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

调用改成count(*list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢谢谢,改好了!太感谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 17:59:24 | 显示全部楼层
a(list)
      用一个列表作为输入参数,那么,可变参数 param 这时就只代表一个输入参数,这个参数就是这个列表。
a(1, 2, 3, 4, 5)
      用 5 个参数作为输入参数,那么,可变参数 param 这时就代表着 5 个参数。与前者相比,显然,这种方式更加符合可变参数设定的用法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-6 10:42:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 20:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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