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

Python代码无法持续显示更新后用户信息的问题求助

问题:Python代码更新后信息无法持久显示

我编写的Python代码在更新用户信息后,后续输出会变回旧值。比如把名字改成CID后,再修改中间名时,输出里的名字又变回了Cid。我希望更新后的信息能在后续操作中持续显示。

示例运行场景

Enter First name: Cid
Enter Middle name: RAZOR
Enter Last name: Kamisato
Enter number of subjects: 1
Please enter this valid subjects: ['CC1', 'CC2', 'CC3', 'CC4', 'CC5']
Please enter the subject: cc1
**** This is your info *****
First name is: Cid
Middle name is: RAZOR
Last name is: Kamisato
Your Selected Subjects are: ['cc1']
Do you want to change anything?(Y/N): y
1. Change First name
2. Change Middle name
3. Change Last name
4. Change number of subjects & change the subjects 
5. Exit
What do you want to change?: 1
Enter First name: CID
****** This is your updated info *******
First name is: CID
Middle name is: RAZOR
Last name is: Kamisato
Number of subjects: 1
Your Selected Subjects are: ['cc1']
Do you want to change anything?(Y/N): y
1. Change First name
2. Change Middle name
3. Change Last name
4. Change number of subjects & change the subjects 
5. Exit
What do you want to change?: 2
Enter Middle name: razor
****** This is your updated info *******
This is your first name: Cid
Middle name is: razor
Last name is: Kamisato
Number of subjects: 1
Your Selected Subjects are: ['cc1']
Do you want to change anything?(Y/N): 

原代码

F_name = []
M_name = []
L_name = []
o_sub = []
no_sub = []
subjects = ['CC1', 'CC2', 'CC3', 'CC4', 'CC5']

name = input('Enter First name: ')
F_name.append(name)
mid_name = input('Enter Middle name: ')
M_name.append(mid_name)
last_name = input('Enter Last name: ')
L_name.append(last_name)


n_sub = int(input('Enter number of subjects: '))


if n_sub <= 5:
    print(f'Please enter this valid subjects: {subjects}')
    no_sub.append(n_sub)
else:
    print('INVALID INPUT!!!')
    print('MAX IS 5!!!')

    exit()

for i in range(n_sub):
    sub = input('Please enter the subject: ')
    if sub.upper() in subjects:
        o_sub.append(sub)

    else:
        print('INVALID INPUT')
        break
print('**** This is your info *****')
print(f'First name is: {name}')
print(f'Middle name is: {mid_name}')
print(f'Last name is: {last_name}')
print(f'Your Selected Subjects are: {o_sub}')

while True:
    choice = input('Do you want to change anything?(Y/N): ')

    if choice.casefold() == 'y':
        print('1. Change First name')
        print('2. Change Middle name')
        print('3. Change Last name')
        print('4. Change number of subjects & change the subjects ')
        print('5. Exit')

    else:
        print('------THANK YOU FOR USING ME------!!!')
        exit()

    option1 = input('What do you want to change?: ')
    if option1 == '1':
        cf_name = str(input('Enter First name: '))
        F_name.clear()
        F_name.append(cf_name)
        print('****** This is your updated info *******')
        print(f'First name is: {cf_name}')
        print(f'Middle name is: {mid_name}')
        print(f'Last name is: {last_name}')
        print(f'Number of subjects: {n_sub}')
        print(f'Your Selected Subjects are: {o_sub}')

    elif option1 == '2':
        cm_name = input('Enter Middle name: ')
        M_name.clear()
        M_name.append(cm_name)
        print('****** This is your updated info *******')
        print(f'This is your first name: {name}')
        print(f'Middle name is: {cm_name}')
        print(f'Last name is: {last_name}')
        print(f'Number of subjects: {n_sub}')
        print(f'Your Selected Subjects are: {o_sub}')

    elif option1 == '3':
        cl_name = input('Enter Last name: ')
        L_name.clear()
        L_name.append(cl_name)
        print('****** This is your updated info *******')
        print(f'This is your first name: {name}')
        print(f'Middle name is: {mid_name}')
        print(f'Last name is: {cl_name}')
        print(f'Number of subjects: {n_sub}')
        print(f'Your Selected Subjects are: {o_sub}')

    elif option1 == '4':
        no_sub.clear()
        o_sub.clear()
        var = int(input('Enter the number of subjects: '))
        no_sub.append(var)
        if var <= 5:
            for i in range(var):
                sub1 = input('Please enter the subject: ')
                if sub1.upper() in subjects:
                    o_sub.append(sub1)

                else:
                    print('INVALID INPUT')
                    break
            print('****** This is your updated info *******')
            print(f'This is your first name: {name}')
            print(f'Middle name is: {mid_name}')
            print(f'Last name is: {last_name}')
            print(f'Number of subjects: {var}')
            print(f'Your Selected Subjects are: {o_sub}')

        else:
            print('INVALID INPUT')
            print('MAX IS 5!!')
            exit()

    elif option1 == '5':
        print('====== THANK YOU FOR USING ME ======')
        exit() 

问题原因

你用name、mid_name、last_name、n_sub这些变量存储初始信息,同时又用F_name、M_name等列表做备份,但更新信息时只修改了列表,没有同步更新对应的变量。后续打印时,还是直接使用旧的变量值,导致之前的更新没有被保留。

比如修改名字后,你更新了F_name列表,但修改中间名时打印的name还是最初的Cid,而不是更新后的CID。

修复方案

直接更新存储信息的变量(每个信息都是单个值,用列表完全没必要,反而增加复杂度),每次修改后同步更新对应的变量,打印时始终使用这些变量:

# 去掉不必要的列表,直接用变量存储信息
subjects = ['CC1', 'CC2', 'CC3', 'CC4', 'CC5']

name = input('Enter First name: ')
mid_name = input('Enter Middle name: ')
last_name = input('Enter Last name: ')

n_sub = int(input('Enter number of subjects: '))

if n_sub <= 5:
    print(f'Please enter this valid subjects: {subjects}')
else:
    print('INVALID INPUT!!!')
    print('MAX IS 5!!!')
    exit()

selected_subjects = []
for i in range(n_sub):
    sub = input('Please enter the subject: ')
    if sub.upper() in subjects:
        selected_subjects.append(sub)
    else:
        print('INVALID INPUT')
        break

print('**** This is your info *****')
print(f'First name is: {name}')
print(f'Middle name is: {mid_name}')
print(f'Last name is: {last_name}')
print(f'Your Selected Subjects are: {selected_subjects}')

while True:
    choice = input('Do you want to change anything?(Y/N): ')

    if choice.casefold() == 'y':
        print('1. Change First name')
        print('2. Change Middle name')
        print('3. Change Last name')
        print('4. Change number of subjects & change the subjects ')
        print('5. Exit')
    else:
        print('------THANK YOU FOR USING ME------!!!')
        exit()

    option1 = input('What do you want to change?: ')
    if option1 == '1':
        name = input('Enter First name: ')  # 直接更新name变量
        print('****** This is your updated info *******')
        print(f'First name is: {name}')
        print(f'Middle name is: {mid_name}')
        print(f'Last name is: {last_name}')
        print(f'Number of subjects: {n_sub}')
        print(f'Your Selected Subjects are: {selected_subjects}')

    elif option1 == '2':
        mid_name = input('Enter Middle name: ')  # 直接更新mid_name变量
        print('****** This is your updated info *******')
        print(f'First name is: {name}')
        print(f'Middle name is: {mid_name}')
        print(f'Last name is: {last_name}')
        print(f'Number of subjects: {n_sub}')
        print(f'Your Selected Subjects are: {selected_subjects}')

    elif option1 == '3':
        last_name = input('Enter Last name: ')  # 直接更新last_name变量
        print('****** This is your updated info *******')
        print(f'First name is: {name}')
        print(f'Middle name is: {mid_name}')
        print(f'Last name is: {last_name}')
        print(f'Number of subjects: {n_sub}')
        print(f'Your Selected Subjects are: {selected_subjects}')

    elif option1 == '4':
        selected_subjects.clear()
        n_sub = int(input('Enter the number of subjects: '))  # 更新n_sub变量
        if n_sub <= 5:
            for i in range(n_sub):
                sub1 = input('Please enter the subject: ')
                if sub1.upper() in subjects:
                    selected_subjects.append(sub1)
                else:
                    print('INVALID INPUT')
                    break
            print('****** This is your updated info *******')
            print(f'First name is: {name}')
            print(f'Middle name is: {mid_name}')
            print(f'Last name is: {last_name}')
            print(f'Number of subjects: {n_sub}')
            print(f'Your Selected Subjects are: {selected_subjects}')
        else:
            print('INVALID INPUT')
            print('MAX IS 5!!')
            exit()

    elif option1 == '5':
        print('====== THANK YOU FOR USING ME ======')
        exit() 

关键修改点

  1. 移除了所有不必要的列表(F_name、M_name等),直接用变量存储用户信息,减少冗余
  2. 修改信息时直接更新对应的变量(比如name = input(...)),确保变量始终保存最新值
  3. 统一打印逻辑,所有输出都使用这些变量,保证每次显示的都是最新信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:25:40