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

如何基于用户输入持续向Python字典添加新键值对?

问题分析与解决

你的代码存在几个核心问题,导致无法新增键值对反而重复覆盖:

  1. 计数逻辑错误:registered_users = i += 1是语法错误,且for i in range(3)会让i每次从0开始循环,计算后registered_users始终为1,导致每次都用同一个键username_1和password_1覆盖原有值。
  2. 全局变量未正确引用:函数内部的registered_users是局部变量,不会更新全局的计数变量,计数无法实现递增。
  3. 循环嵌套冗余:while True嵌套for循环的设计不符合需求,你需要的是持续接收输入,而非固定循环3次。

修正后的代码

user_database = {
    "username": "my_username",
    "password": "my_password"
}
 
registered_users = 1

def register_user(user_database):
    global registered_users  # 声明使用全局计数变量
    while True:
        username = input("Enter your username: ")
        # 新增退出逻辑,输入q可终止注册
        if username.lower() == 'q':
            print("退出注册流程")
            break
        password = input("Enter your password: ")
        # 用递增的计数生成唯一键名
        user_database[f'username_{registered_users}'] = username
        user_database[f'password_{registered_users}'] = password
        print(user_database)
        registered_users += 1  # 每次注册完成后计数加1

register_user(user_database)

关键修改说明

  • 通过global registered_users让函数内部使用全局的计数变量,确保每次注册后计数能正确递增。
  • 移除冗余的for循环,仅保留while True实现持续输入,同时添加了实用的退出逻辑。
  • 每次注册完成后执行registered_users += 1,保证下一次生成的键名唯一,不会覆盖已有的用户信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:10:49