Python wordcount函数return失效print正常问题求助
嘿,我一眼就看到问题出在哪了!
问题诊断
你的核心问题是**return语句的位置错误**!
看你当前的代码结构,return被放在了第一个for循环的内部——这意味着函数在处理mylist的第一个元素时,就会立刻返回结果并终止执行,后面的元素根本没机会被处理。而用print的话,每次循环都会执行打印操作,所以你能看到所有元素的结果,但函数其实还是提前结束了。
修正方案
要实现返回所有元素单词数的列表,你需要:
- 先初始化一个空列表,用来存储每个元素的计算结果
- 在循环中把每个元素处理后的单词数添加到这个列表里
- 等所有元素都处理完,再统一返回这个列表
修正后的代码如下:
def wordcount(mylist): # 初始化空列表存储结果 result = [] for i in mylist: # 遍历标点符号并替换为空格 for c in "-,_.": i = i.replace(c, " ") # 分割字符串并计算单词数量 word_num = len(i.split()) # 将结果添加到列表中 result.append(word_num) # 所有元素处理完成后返回结果列表 return result
测试验证
比如你传入测试列表:
test_list = ["hello,world!", "python_is-cool", "a b-c_d"] print(wordcount(test_list))
会得到输出:[2, 2, 4],完全符合你的需求。
额外小提示
str.split()默认会按任意空白字符分割(包括多个空格),所以即使替换标点后出现多个空格,也不会影响单词数的计算- 如果需要处理更多标点,可以扩展标点字符串,比如加上
!?;:()这些
内容的提问来源于stack exchange,提问作者Liu Yu
相关产品推荐
相关产品推荐

