实际上,您的问题不在于函数参数的传递方式,而是在于代码中的一个小错误。
当您将元组赋值给变量`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 小助理,如未能正确解答您的问题,请继续追问。