如何从txt文件读取已写入数据 实现Python过山车身高核验功能
功能实现完整代码
def rollercoaster(): name = input("请输入你的姓名:") # 检查是否已有该人员的记录 exist_record = None try: # 读取所有已存储的记录 with open("booklist.txt", "r", encoding="utf-8") as f: for line in f.readlines(): line = line.strip() if not line: continue # 匹配姓名(加空格避免姓名包含关系导致的误匹配) if line.startswith(f"{name} "): exist_record = line break except FileNotFoundError: # 文件不存在说明无历史记录,直接走录入流程 pass # 已有记录直接输出结果 if exist_record: print(f"已查询到历史记录:{exist_record}") return # 无记录则录入身高信息 height_cm = int(input("请输入你的身高(单位:厘米):")) ft = height_cm / 30.48 print(f"你的身高换算为英尺是:{ft:.2f}") # 判断是否符合乘坐要求,覆盖等于5.5英尺的边界场景 if ft < 5.5: status = "不符合乘坐身高要求" else: status = "符合乘坐身高要求" # 写入新记录,末尾加换行避免记录拼接 with open("booklist.txt", "a", encoding="utf-8") as f: f.write(f"{name} {status}\n") print(f"信息已录入:{name} {status}")
关键优化说明
- 新增姓名预校验逻辑:输入姓名后优先读取本地文件匹配,匹配成功直接返回结果,无需重复录入身高
- 改用
with open上下文管理器操作文件,无需手动调用close方法,避免异常场景下文件资源泄漏 - 修复原代码边界值缺失问题:原逻辑未覆盖身高恰好等于5.5英尺的场景,改用if-else结构覆盖所有情况
- 写入记录时追加换行符,避免多条记录拼接在一起导致后续匹配出错
- 兼容文件不存在的场景:首次运行无存储文件时不会报错,自动进入录入流程
- 支持交互语言切换:默认已改为中文提示,需要英文提示的话替换input、print里的文字即可
内容的提问来源于stack exchange,提问作者user17379637
相关产品推荐
相关产品推荐

