字符串 密码检测
symbol = r"""~!@#$%^&*()_=-/,.?<>;:[]{}|\"""numbers='0123456789'
sum_ =0
warn = """
请按以下方式提升您的密码安全级别:
1. 密码必须由数字、字母、及特殊字符三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位"""
while True:
passwds = input('请输入需要检查密码组合:')
if len(passwds) <= 8:
print("您的密码安全级别评定为:低")
print(warn)
elif 16 >len(passwds) > 8:
print("您的密码安全级别评定为:中")
print(warn)
elif len(passwds) > 16:
#首字母判断
if passwds.isalpha()==True:
for i in range(1):
for n in passwds:
if numbers.find(n) !=-1:
sum_ +=1
for i in range(1):
for each in passwds:
if symbol.find(each)!=-1:
sum_ +=1
if sum_==2:
print("您的密码安全级别评定为:高")
print("请继续保持")
else:
print("您的密码安全级别评定为:中")
print(warn)
求教1. 这个程序在 if passwds.isalpha()==True: 的时候没有发挥作用,只在满足16位以上和特殊字符串后就判断了,我按数字开头也被安全等级也被评为高,怎么回事呢?明明应该先判断是否是字母开头后才对后面的步骤进行判断的
2. sum_ 想如果出现过数字和特殊符号就加一次 sum_==2的时候说明满足了3种组合都满足,但打印出sum_的总数是把密码里所有出现的数字和特殊符号都计算了一次
怎么改才能按我的这个思路,把程序运行下去,谢谢 帮你修改了。
symbol = r"""~!@#$%^&*()_=-/,.?<>;:[]{}|\"""
numbers='0123456789'
warn = """
请按以下方式提升您的密码安全级别:
1. 密码必须由数字、字母、及特殊字符三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位"""
while True:
sum_ =0
print(warn)
passwds = input('请输入需要检查密码组合:')
#首字母判断
if passwds.isalpha()==True:
if len(passwds) <= 8:
print("您的密码安全级别评定为:低")
elif len(passwds) < 16:
print("您的密码安全级别评定为:中")
else:
for n in passwds:
if numbers.find(n) !=-1:
sum_ +=1
break
for each in passwds:
if symbol.find(each)!=-1:
sum_ +=1
break
if sum_==2:
print("您的密码安全级别评定为:高")
print("请继续保持")
else:
print("您的密码安全级别评定为:中")
else:
print('密码只能由字母开头') 冬雪雪冬 发表于 2021-9-28 21:14
帮你修改了。
清晰了好多,谢谢
页:
[1]