Python如何实现文本文件中单词附带数字的求和功能?
代码问题分析
- 基础语法错误:函数定义行
def rixum(file_name):后的所有函数内代码都没有缩进,Python强制要求缩进作为代码块标识,运行时会直接抛出语法错误。 - 核心逻辑错误:找到单词中第一个数字的位置、截取后缀转为数字加入结果后,没有跳出循环,会继续遍历后续的字符,每遇到一个数字就再截一次后缀加入结果。比如单词
a23会被拆成23、3两次加入列表,导致结果远大于预期。 - 边界判断错误:while循环的条件写的是
i < len(word)-1,这会直接跳过单词最后一个字符的判断,如果单词后缀只有1位数字(比如x7),会完全漏掉统计。 - 读取逻辑限制:只调用了一次
readline(),仅能处理文件的第一行内容,如果文件有多行数据,后续行的数字都会被忽略。
修正后可运行代码
def rixum(file_name): res = [] # 用with上下文管理器自动处理文件关闭,避免资源泄漏 with open(file_name, 'r', encoding='utf-8') as f: # 遍历文件所有行 for line in f: temp = line.split() for word in temp: # 遍历字符找第一个数字的位置 for i, char in enumerate(word): if char.isdigit(): # 截取后缀转数字加入列表 res.append(int(word[i:])) # 找到就跳出,不用继续遍历当前单词的后续字符 break total = sum(res) print(total) return total
验证效果
输入文件内容为a23 B55时,运行函数会输出78,符合需求。
内容的提问来源于stack exchange,提问作者asia najjar
相关产品推荐
相关产品推荐

