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

如何使用单个列表实现Python程序保存并查看上一次输入的个人信息

如何使用单个列表实现Python程序保存并查看上一次输入的个人信息

我明白你的困扰啦!你现在的代码里,看似把之前的信息存在了previous变量里,但实际上因为Python的列表是引用类型,previous = information这行代码并没有真正复制一份列表,只是让previous和information指向了内存里同一个列表对象。所以当你更新information的内容时,previous也会跟着改变,自然看不到之前的输入了。

不需要创建多个重复结构的列表,我们只需要在保存旧信息的时候做一个列表的拷贝,就能解决这个问题。另外,尽量少用全局变量,让代码更清晰易维护,我给你修改一下代码:

def input_information():
    print("Enter your name")
    name = input()

    print("Enter your favorite subject")
    subject = input()

    print("Enter your height")
    height = input()

    print("Enter your country")
    country = input()
    
    # 返回新的信息列表
    return [name, subject, height, country]

# 获取第一次输入的信息
information = input_information()
print(f"Here is your basic social information about yourself: {information} \n")

# 保存第一次的信息,这里用列表切片实现拷贝
previous_information = information[:]

print("Do you wanna input new information? y/n")
choice = input().lower()

if choice == "y":
    # 获取新的信息,直接覆盖原information变量
    information = input_information()
    print(f"Here is your basic social information about yourself: {information} \n")
    
    print("Do you wanna see your previous information? y/n")
    ac_choice = input().lower()
    if ac_choice == "y":
        print(previous_information)
else:
    print("Thank you.")

关键修改点说明:

  • 把输入逻辑封装成函数并返回列表,去掉了全局变量,代码结构更干净。
  • 保存旧信息时用了information[:],这是Python里创建列表拷贝的简单方式,这样previous_information就会是一个全新的列表,和原information互不影响。
  • 用lower()处理输入,避免用户输入大写的Y/N导致判断失效,程序更健壮。

这样你就只用了两个结构一致的列表(一个存当前信息,一个存上一次的),完全没有冗余问题,还完美实现了保存并查看上一次输入的需求。

备注:内容来源于stack exchange,提问作者dale lapuz20

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 10:29:33