You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:24:02