Python密码验证与加密程序开发问题排查求助
代码问题排查
- 布尔值拼写错误:Python 中布尔真值、假值为大写的
True、False,代码中全部写成了小写的true/false,会直接触发名称错误。 - 未定义变量+方法调用逻辑错误:大小写、数字校验函数中的
i没有被定义,且isupper()/islower()/isdigit()是字符对象的成员方法,正确用法是字符.isupper(),不是传入参数调用。 - 特殊字符校验逻辑完全颠倒:先调用了不存在的
special_char()函数,才定义特殊字符列表,且列表名拼写错误为specical_char,没有遍历密码判断是否包含指定特殊字符的逻辑。 - 加密函数逻辑无效:
encrypt函数中两行赋值直接抵消,没有遍历密码字符做ASCII偏移处理的逻辑,完全无法实现加密功能。 - 主流程逻辑混乱:用户输入代码放在了
main()函数执行之后,main()调用password_check时传入的password是未定义变量,password_check本身也没有调用内部各校验规则、汇总校验结果的逻辑,没有返回值。 - 冗余无效代码:末尾存在空
print调用,没有任何作用。
修复后的完整实现
以下实现了「先校验密码合规性(长度≥8、包含大写、小写、数字、指定特殊字符),校验通过后执行ASCII偏移+1加密输出」的需求:
def password_check(password): # 密码长度≥8校验 def length_test(password): return len(password) >= 8 # 大写字母校验 def uppercase_test(password): return any(char.isupper() for char in password) # 小写字母校验 def lowercase_test(password): return any(char.islower() for char in password) # 数字校验 def digit_test(password): return any(char.isdigit() for char in password) # 特殊字符校验 def special_character_test(password): special_char = ["$", "@", "#", "%", "*"] return any(char in special_char for char in password) # 汇总所有校验规则 all_tests = [ length_test(password), uppercase_test(password), lowercase_test(password), digit_test(password), special_character_test(password) ] return all(all_tests) def encrypt(password): # 简单加密:每个字符ASCII码偏移+1 encrypted = [] for char in password: encrypted.append(chr(ord(char) + 1)) return ''.join(encrypted) def main(): user_input = input("请输入要设置的密码:") if password_check(user_input): encrypted_pwd = encrypt(user_input) print(f"密码校验通过,加密后结果为:{encrypted_pwd}") else: print("密码校验不通过:需同时满足长度≥8、包含大写字母、小写字母、数字、特殊字符($@#%*)") if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者Merrill
相关产品推荐
相关产品推荐

