如何逐行对比文件中同一行的两个数值并统计胜负平次数
问题分析与修正代码
需求:逐行读取2022_sport.txt文件,每行格式为[FGCU得分]-[对手得分],对比两列整数,统计FGCU队的获胜(fgcuWins)、失利(fgcuLoses)及平局(ties)次数。
原代码存在的问题
- 未定义变量
char,直接使用会导致报错,且未对每行比分做分割处理 - 未将字符串格式的比分转换为整数,直接比较字符串会得到错误结果(比如字符串"10"会被判定为小于"2",但实际整数10更大)
- 错误地对循环变量
lines执行+=1操作,lines是当前行的文本内容,并非计数器 - 未正确管理文件资源,建议用
with语句自动完成文件关闭
修正后的代码
fgcuWins = 0 fgcuLoses = 0 ties = 0 # 使用with语句自动管理文件,无需手动关闭 with open("2022_sport.txt", "r") as file: for line in file: # 去除行尾换行符,按'-'分割比分 fgcu_score, opp_score = line.strip().split('-') # 转换为整数进行数值比较 fgcu = int(fgcu_score) opp = int(opp_score) if fgcu == opp: ties += 1 elif fgcu > opp: fgcuWins += 1 else: fgcuLoses += 1 print(f"FGCU获胜次数: {fgcuWins}") print(f"FGCU失利次数: {fgcuLoses}") print(f"平局次数: {ties}")
代码说明
with open(...)语句会在代码块结束后自动关闭文件,避免资源泄漏- 对每行执行
strip()去除换行符和多余空格,再用split('-')分割成FGCU得分和对手得分的字符串 - 将分割后的字符串转为整数,确保数值比较的正确性
- 根据整数比较结果,分别累加对应的统计变量
结合给定的2022_sport.txt内容,运行修正代码后会得到正确结果:
- 获胜次数:12
- 失利次数:6
- 平局次数:1
内容的提问来源于stack exchange,提问作者Mikehouse627
相关产品推荐
相关产品推荐

