大佬们 帮帮忙指出下我的错误,我头秃了!!!
import reprint('请输入需要检查的密码组合:', end='')
password = str(input())
shuzhi = bool(re.search(r'\d', password)) #是否含有数字
r = re.compile(r'^')
for item in password: #判断是否含有字母
result = r.match(item)
if result != None:
zhimu = True
break
else:
zhimu = False
break
length = len(password) #长度
alphabet = password.isalpha() #检查是否都是字母
digit = password.isdecimal() #检查是否都是数字
simple = password.isalnum() #检查是否都是数字或字母
special = ['~!@#$%^&*()_=-/,.?<>;:[]{}|\\']
for each in password:#检测是否含有特殊字符
if each in special:
spe = True
break
else:
spe = False
break
begin = password.isalpha #判断第一个字符是否为字母
if alphabet == True or digit == True or length <= 8:
print('你的密码安全级别评定为:低1')
print('请按以下方式提升您的密码安全级别:\n 1.密码必须由数字、字母及特殊字符三种组合\n 2.密码只能由字母开头\n 3.密码长度不能低于16位')
elif alphabet == False and digit == False and length >= 8:
if simple == True:
print('你的密码安全级别评定为:中1')
elif spe == True and (shuzhi == True or zhimu == True):
print('你的密码安全级别评定为:中2')
else:
print('你的密码安全级别评定为:低2')
print('请按以下方式提升您的密码安全级别:\n 1.密码必须由数字、字母及特殊字符三种组合\n 2.密码只能由字母开头\n 3.密码长度不能低于16位')
elif begin == True and shuzhi == True and spe == True:
print('你的密码安全级别评定为:高')
print('请继续保持')
else:
print('输入有误!')
14讲课后作业!!! 我们的头一万年前就秃了!(doge) 可否展示一下报错信息
r = re.compile(r'^') 可以去掉 ^,for 循环都是一个字符一个字符的循环,不用开头匹配
错误:
1)
for item in password: #判断是否含有字母
result = r.match(item)
if result != None:
zhimu = True
break
else:
zhimu = False
break
2)
for each in password:#检测是否含有特殊字符
if each in special:
spe = True
break
else:
spe = False
break
正确:
1)
for item in password: #判断是否含有字母
result = r.match(item)
if result != None:
zhimu = True
break
else:
zhimu = False
2)
for each in password:#检测是否含有特殊字符
if each in special:
spe = True
break
else:
spe = False
你两个都 break,肯定只会循环第一个字符就退出了,这样for循环完全没有用处
错误:special = ['~!@#$%^&*()_=-/,.?<>;:[]{}|\\']
正确:special = '~!@#$%^&*()_=-/,.?<>;:[]{}|\\'
原因:第一个弄成列表,导致列表的这个字符串是个整体,你判断 password 是不是在列表的元素中 除非你输入和这个字符串一模一样,否则肯定会导致spe = False
将:elif begin == True and shuzhi == True and spe == True and length >= 16:
print('你的密码安全级别评定为:高')
print('请继续保持')
移动到 if 的第一个下面,就是当第一个 elif 加上长度判断
完整代码,没有帮你优化哈,你自己搞搞,还有就是我觉得这里用正则有点大材小用了:
import re
print('请输入需要检查的密码组合:', end='')
password = str(input())
shuzhi = bool(re.search(r'\d', password)) #是否含有数字
r = re.compile(r'^')
for item in password: #判断是否含有字母
result = r.match(item)
if result != None:
zhimu = True
break
else:
zhimu = False
length = len(password) #长度
alphabet = password.isalpha() #检查是否都是字母
digit = password.isdecimal() #检查是否都是数字
simple = password.isalnum() #检查是否都是数字或字母
special = '~!@#$%^&*()_=-/,.?<>;:[]{}|\\'
for each in password:#检测是否含有特殊字符
if each in special:
spe = True
break
else:
spe = False
begin = password.isalpha() #判断第一个字符是否为字母
if alphabet == True or digit == True or length <= 8:
print('你的密码安全级别评定为:低1')
print('请按以下方式提升您的密码安全级别:\n 1.密码必须由数字、字母及特殊字符三种组合\n 2.密码只能由字母开头\n 3.密码长度不能低于16位')
elif begin == True and shuzhi == True and spe == True and length >= 16:
print('你的密码安全级别评定为:高')
print('请继续保持')
elif alphabet == False and digit == False and length >= 8:
if simple == True:
print('你的密码安全级别评定为:中1')
elif spe == True and (shuzhi == True or zhimu == True):
print('你的密码安全级别评定为:中2')
else:
print('你的密码安全级别评定为:低2')
print('请按以下方式提升您的密码安全级别:\n 1.密码必须由数字、字母及特殊字符三种组合\n 2.密码只能由字母开头\n 3.密码长度不能低于16位')
else:
print('输入有误!')
Twilight6 发表于 2020-7-6 20:42
多谢大佬,刚学到14讲,用了很多百度来的半懂不懂的,哈哈哈,感谢 Hello. 发表于 2020-7-6 19:41
可否展示一下报错信息
感谢,没有报错,只是输出不了正确答案,五楼大佬指出来了,哈哈
页:
[1]