《Python编程快速上手——让繁琐工作自动化 第2版》
7.18 实践项目
7.18.2 强口令检测
以下为书中的项目介绍:
写一个函数,使用正则表达式,确保传入的口令字符串是强口令。强口令的定义是:长短不少于8个字符,同时包含大写和小写字符,至少有一位数字。你可能需要多个正则表达式来测试该字符串,以保证它的强度。
将以上项目介绍分别发给豆包AI和deepseek V3模型,用一个python脚本编写,以下为得到的回答(均为一遍作答)
豆包AI回答:
import re
def is_strong_password(password):
# 检查长度是否不少于 8 个字符
length_regex = re.compile(r'.{8,}')
if not length_regex.search(password):
return False
# 检查是否包含大写字符
upper_regex = re.compile(r'[A-Z]')
if not upper_regex.search(password):
return False
# 检查是否包含小写字符
lower_regex = re.compile(r'[a-z]')
if not lower_regex.search(password):
return False
# 检查是否至少有一位数字
digit_regex = re.compile(r'\d')
if not digit_regex.search(password):
return False
return True
# 测试函数
password = "Abc12345"
if is_strong_password(password):
print("这是一个强口令。")
else:
print("这不是一个强口令。")
运行结果:
基本功能可以实现
修改password = "Abc12345"运行
这是一个强口令。
修改password = "Abcddddd"运行
这不是一个强口令。
deepseek V3模型回答:
import re
def is_strong_password(password):
"""
检测密码是否为强口令
"""
# 检查长度是否不少于8个字符
if len(password) < 8:
return False
# 检查是否包含至少一个大写字母
if not re.search(r'[A-Z]', password):
return False
# 检查是否包含至少一个小写字母
if not re.search(r'[a-z]', password):
return False
# 检查是否包含至少一个数字
if not re.search(r'[0-9]', password):
return False
# 如果所有条件都满足,返回True
return True
def main():
# 输入密码
password = input("请输入密码: ")
# 检测密码强度
if is_strong_password(password):
print("密码是强口令。")
else:
print("密码不是强口令。请确保密码满足以下条件:")
print("- 长度不少于8个字符")
print("- 包含至少一个大写字母和一个小写字母")
print("- 包含至少一个数字")
if __name__ == "__main__":
main()
运行结果:
基本功能可以实现
请输入密码: Abc12345
密码是强口令。
请输入密码: Abcddddd
密码不是强口令。请确保密码满足以下条件:
- 长度不少于8个字符
- 包含至少一个大写字母和一个小写字母
- 包含至少一个数字
总结:
本项目中deepseek V3和豆包都可以给出合理的代码,但在判断长度方面,deepseek使用"if len(password) < 8:",豆包使用正则表达式"length_regex = re.compile(r'.{8,}')",从性能角度看,使用 len(password)<8 代替正则表达式检查长度更高效,所以此项目建议采用deepseek的回答作为参考。