用Python研究推文长度对热度的影响:函数编写报错求助
修复三个Python函数的错误实现
需要实现的三个函数需求:
tweet_length:接收字符串类型的tweet参数,返回该推文的单词数量(整数);average_tweet_length:接收字符串列表tweet_list参数,返回列表中推文的平均单词长度(浮点数);get_long_tweets:接收字符串列表tweet_list参数,返回列表中长于平均长度的推文。
原错误代码
def tweet_length(tweet): return len(tweet) print(tweet_length("Hello")) def average_tweet_length(tweet_list): for tweet in range(len(tweet_list)): average = int(tweet_list[tweet]) / (len(tweet_list)) return average print(average_tweet_length(['Hello', 'Greetings', 'Hiiii', "Tweet"])) def get_long_tweets(tweet_list): if len(tweet_list) > average: return tweet_list
错误分析与修复
1. tweet_length函数问题
原代码返回的是字符串的字符长度,不是单词数量。要按空格分割单词后统计数量,用split()方法(默认按任意空白符分割,兼容多个空格的情况)。
修复后代码:
def tweet_length(tweet): # 分割单词并统计数量,空字符串返回0 words = tweet.split() return len(words)
2. average_tweet_length函数问题
- 循环仅执行一次就返回结果,未累加所有推文的单词数
- 错误尝试将字符串转成整数,应该先获取每个推文的单词数
- 逻辑错误:需要先计算所有推文的总单词数,再除以推文总数得到平均值
修复后代码:
def average_tweet_length(tweet_list): if not tweet_list: # 处理空列表的情况,避免除以0 return 0.0 total_words = sum(tweet_length(tweet) for tweet in tweet_list) return total_words / len(tweet_list)
3. get_long_tweets函数问题
- 未定义
average变量,需要先调用average_tweet_length计算平均值 - 错误地比较列表长度和平均值,应该遍历每个推文,判断其单词数是否大于平均值,收集符合条件的推文
修复后代码:
def get_long_tweets(tweet_list): avg_length = average_tweet_length(tweet_list) # 筛选出单词数大于平均值的推文 return [tweet for tweet in tweet_list if tweet_length(tweet) > avg_length]
测试示例
# 测试tweet_length print(tweet_length("Hello world")) # 输出: 2 print(tweet_length("I love Python programming")) # 输出:4 # 测试average_tweet_length test_tweets = ['Hello', 'Greetings everyone', 'Hiiii', "Tweet this"] print(average_tweet_length(test_tweets)) # 输出: (1+2+1+2)/4 = 1.5 # 测试get_long_tweets print(get_long_tweets(test_tweets)) # 输出: ['Greetings everyone', 'Tweet this']
内容的提问来源于stack exchange,提问作者jdavis29
相关产品推荐
相关产品推荐

