鱼C论坛

 找回密码
 立即注册
查看: 114|回复: 1

[已解决]关于函数实参的问题

[复制链接]
发表于 2024-6-3 23:24:36 | 显示全部楼层 |阅读模式
1鱼币
def countStr(*str_long):
    lenghth = len(str_long)
    # print(lenghth)
    for i in range(lenghth):
        str_num = 0
        digit_num = 0
        punctuation_num = 0
        space_num = 0
        for each in str_long[i]:
            if each.isalpha():
                str_num += 1
            elif each.isdigit():
                digit_num += 1
            elif each.isspace():
                space_num += 1
            else:
                punctuation_num += 1
        print(f'第{i+1}个字符串共有:英文字母{str_num}个,数字{digit_num}个,空格{space_num}个,其他字符{punctuation_num} 个。')
str_long = ('I love fishc.com.', 'I love you, you love me.')
countStr(str_long)

以上这段代码是查找句子中的字母、数字、空格、其他符号个数的函数,但是只有
countStr('I love fishc.com.', 'I love you, you love me.')才能运行,如果我把元组赋给变量,再用函数实参为变量运行结果就是错的。是不是实参必须直接引用。
最佳答案
2024-6-3 23:24:37
实际上,您的问题不在于函数参数的传递方式,而是在于代码中的一个小错误。

当您将元组赋值给变量`str_long`后,`str_long`本身就成为了一个元组,而不再是多个参数。所以,在函数调用时,应该使用`*`操作符来拆包这个元组,使其成为多个参数。

修改代码如下:
def countStr(*str_long):
    length = len(str_long)
    for i in range(length):
        str_num = 0
        digit_num = 0
        punctuation_num = 0
        space_num = 0
        for each in str_long[i]:
            if each.isalpha():
                str_num += 1
            elif each.isdigit():
                digit_num += 1
            elif each.isspace():
                space_num += 1
            else:
                punctuation_num += 1
        print(f'第{i+1}个字符串共有:英文字母{str_num}个,数字{digit_num}个,空格{space_num}个,其他字符{punctuation_num}个。')

str_long = ('I love fishc.com.', 'I love you, you love me.')
countStr(*str_long)

在这个修改后的代码中,我们通过拆包操作`*str_long`,将元组中的每个元素都作为单独的参数传递给`countStr()`函数。

现在,您可以将元组赋值给变量,并且使用变量作为函数参数,结果会正确输出。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

最佳答案

查看完整内容

实际上,您的问题不在于函数参数的传递方式,而是在于代码中的一个小错误。 当您将元组赋值给变量`str_long`后,`str_long`本身就成为了一个元组,而不再是多个参数。所以,在函数调用时,应该使用`*`操作符来拆包这个元组,使其成为多个参数。 修改代码如下: 在这个修改后的代码中,我们通过拆包操作`*str_long`,将元组中的每个元素都作为单独的参数传递给`countStr()`函数。 现在,您可以将元组赋值给变量,并 ...

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-3 23:24:37 | 显示全部楼层    本楼为最佳答案   
实际上,您的问题不在于函数参数的传递方式,而是在于代码中的一个小错误。

当您将元组赋值给变量`str_long`后,`str_long`本身就成为了一个元组,而不再是多个参数。所以,在函数调用时,应该使用`*`操作符来拆包这个元组,使其成为多个参数。

修改代码如下:
def countStr(*str_long):
    length = len(str_long)
    for i in range(length):
        str_num = 0
        digit_num = 0
        punctuation_num = 0
        space_num = 0
        for each in str_long[i]:
            if each.isalpha():
                str_num += 1
            elif each.isdigit():
                digit_num += 1
            elif each.isspace():
                space_num += 1
            else:
                punctuation_num += 1
        print(f'第{i+1}个字符串共有:英文字母{str_num}个,数字{digit_num}个,空格{space_num}个,其他字符{punctuation_num}个。')

str_long = ('I love fishc.com.', 'I love you, you love me.')
countStr(*str_long)

在这个修改后的代码中,我们通过拆包操作`*str_long`,将元组中的每个元素都作为单独的参数传递给`countStr()`函数。

现在,您可以将元组赋值给变量,并且使用变量作为函数参数,结果会正确输出。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-22 04:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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