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

Python 二维列表按输入用户名定位修改指定用户信息问题咨询

核心问题原因

你当前代码固定用allUserDetails[0][x]修改字段,索引0永远指向二维列表的第一个用户子列表,所以无论匹配到哪个用户,都会修改第一个用户的信息。
因为你在遍历allUserDetails时,匹配到的子列表已经赋值给变量x,直接修改x内的元素即可,列表是可变类型,修改x会同步修改原二维列表中的对应项。

其他需要修正的逻辑问题

  • 匹配到用户处理完成后没有跳出循环,会继续遍历后续剩余用户
  • 「用户不存在」的判断逻辑错误,当前会对每个不匹配的用户都输出一次未找到提示
  • Q/q退出的判断条件错误,updateSelection == ("Q", "q")是判断输入等于这个元组,而非判断输入是否是Q/q,需要改用in运算符

修正后的完整代码

allUserDetails = [["John", "Doe", "User", "Sales", "johndoe91", "password"],
                  ["James", "Hill", "Admin", "Administrator", "hill95", "12345678"]]


def update_user():
    print("\n:: Update User ::")
    print("-" * 25)
    print("\nWhich field would you like to update?\n")
    print("1. First Name")
    print("2. Last Name")


print(allUserDetails)
searchUser = input("\nInput username to edit (press 1 to return to Main Menu): ").lower()

while searchUser != "1":
    user_found = False
    for x in allUserDetails:
        if x[4] == searchUser:
            user_found = True
            print()
            print(searchUser, "found in the list")
            update_user()
            updateSelection = input("\nInput number of field or press Q/q to return to Menu 3: ")
            if updateSelection == "1":
                newFirstName = input("Input new First Name: ")
                # 直接修改匹配到的x子列表的对应字段
                x[0] = newFirstName
                print(allUserDetails)
            elif updateSelection == "2":
                newLastName = input("Input new Last Name: ")
                x[1] = newLastName
                print(allUserDetails)
            elif updateSelection in ("Q", "q"):
                break
    # 统一判断用户是否存在
    if not user_found:
        print()
        print(searchUser, "not found")
    # 重新获取要修改的用户名
    searchUser = input("\nInput username to edit (press 1 to return to Main Menu): ").lower()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:24:01