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

Python用户名管理:保留输入大小写并实现大小写不敏感登录

解决方案:用字典存储用户名映射

要实现保留原始输入大小写且登录不区分大小写验证,核心是同时存储用户名的原始值和小写(casefold)版本,用字典建立两者的映射关系是最直接的方式——字典的键用小写版本用于快速匹配,值存用户输入的原始用户名。

修改后的完整代码

user_db = {}  # 键:小写用户名,值:用户输入的原始用户名
app = True

while app:
    start = input("Do you want to add a user to the list? ")
    if start == "yes":
        newUsername = input("Add a username to the list: ")
        lower_username = newUsername.casefold()
        # 检查是否已存在(不区分大小写)
        if lower_username in user_db:
            print(f"Username '{user_db[lower_username]}' already exists (case-insensitive match).")
        else:
            user_db[lower_username] = newUsername
            print(f"Added username: {newUsername}")
    elif start == "no":
        userLogin = input("Enter your username: ")
        lower_login = userLogin.casefold()
        if lower_login in user_db:
            print(f"Nice, welcome back, {user_db[lower_login]}!")
        else:
            print("Nope, not on the list.")
    else:
        print("Please enter 'yes' or 'no'.")

关键调整点

  • 数据结构替换:把原来的列表username换成字典user_db,既解决了原始用户名存储问题,又能利用字典O(1)的高效查找能力。
  • 注册逻辑:
    • 对新输入的用户名做casefold()处理,作为字典的键
    • 先检查键是否存在,避免重复注册(不区分大小写)
    • 不存在则将原始用户名存入字典对应的值
  • 登录逻辑:
    • 对登录输入做casefold()处理,去字典的键中匹配
    • 匹配成功时,取出字典中存储的原始用户名进行提示,既验证通过又保留了用户最初的输入样式

示例运行

  1. 注册输入jOhN,字典存储为{'john': 'jOhN'}
  2. 登录输入JOHN,转小写后匹配到键john,输出Nice, welcome back, jOhN!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:32:14