Python新手求优化Credential verifier:减少凭证验证条件的方法
优化方案1:使用集合存储凭证元组
这种方式贴合你原本的思路,把所有合法的(用户名, 密码)元组集中存放在一个集合里,验证时只需判断输入的元组是否在集合中即可。后续新增凭证,只要往集合里加新的元组就行,完全不用修改验证逻辑。
代码示例:
# 存储所有合法凭证的集合 valid_credentials = {('serah', '0168'), ('bob', '0110'), ('kevin', '0440')} def log_in(): name_input = input('Username: ') password_input = input('Password: ') user_cred = (name_input, password_input) if user_cred in valid_credentials: print(f'hello {name_input}') else: print(False) log_in()
优化方案2:使用字典存储(更推荐)
因为用户名具有唯一性,用字典以用户名为键、密码为值存储,不仅能简化验证逻辑,还能区分「用户名不存在」和「密码错误」两种情况,给用户更明确的反馈。
代码示例:
# 用字典存储用户名与对应密码 valid_credentials = { 'serah': '0168', 'bob': '0110', 'kevin': '0440' } def log_in(): name_input = input('Username: ') password_input = input('Password: ') # 先检查用户名是否存在 if name_input in valid_credentials: if valid_credentials[name_input] == password_input: print(f'hello {name_input}') else: print('密码错误') else: print('用户名不存在') log_in()
额外说明
你原来定义的credential类没有实际必要——它仅封装了一个元组,没有提供额外功能。直接用集合或字典存储凭证更简洁高效,后续新增凭证时,只需在集合/字典中添加对应条目,完全不需要修改log_in函数里的判断代码。
内容的提问来源于stack exchange,提问作者Alie_Yashiro
相关产品推荐
相关产品推荐

