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

Python如何向列表追加值不覆盖旧数据 兼容T大小写判断

问题修复方案

你的代码存在两个核心问题,对应修复方式如下:

  • 旧数据被覆盖问题
    每次程序启动时你都直接将zadania初始化为空列表,写入文件前从未读取过历史存储的数据,且wb文件打开模式会直接清空原文件内容,最终写入的只有本次运行新增的内容,旧数据会全部丢失。修复时需要在程序启动阶段优先读取已存在的pickle文件加载历史数据,仅当文件不存在时才初始化空列表。
  • 大小写输入不兼容问题
    获取用户输入的选择项后,先统一做首尾去空格、转大写(或转小写)处理,再进入判断逻辑,即可同时兼容大写T/N、小写t/n的输入,也能规避用户不小心输入前后空格导致的判断失效问题。

修正后的完整代码:

import pickle

# 加载历史已存数据,文件不存在时初始化空列表
try:
    with open('zad', 'rb') as fp:
        zadania = pickle.load(fp)
except FileNotFoundError:
    zadania = []

while True:
    # 统一处理输入,兼容大小写、前后空格
    a = input("Do you want to add value? T/N").strip().upper()
    if a == 'T':
        new_item = input('Write what you want to add: ').strip()
        zadania.append(new_item)
    elif a == 'N':
        break
    else:
        print("Wrong value, please enter T or N")

# 将包含旧数据+新数据的完整列表写入文件
with open('zad', 'wb') as fp:
    pickle.dump(zadania, fp)

注:原代码冗余的内层输入校验循环已移除,外层死循环会自动处理非法输入,逻辑更简洁。

内容的提问来源于stack exchange,提问作者bartlowej

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:15:58