如何基于用户输入持续向Python字典添加新键值对?
问题分析与解决
你的代码存在几个核心问题,导致无法新增键值对反而重复覆盖:
- 计数逻辑错误:
registered_users = i += 1是语法错误,且for i in range(3)会让i每次从0开始循环,计算后registered_users始终为1,导致每次都用同一个键username_1和password_1覆盖原有值。 - 全局变量未正确引用:函数内部的
registered_users是局部变量,不会更新全局的计数变量,计数无法实现递增。 - 循环嵌套冗余:
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
相关产品推荐
相关产品推荐

