14讲动动手作业问题
本帖最后由 逆鳞丶樱之羽 于 2020-11-25 21:18 编辑题目如下图
程序代码我已经写好了,我觉的思路没有问题(代码完全可以运行),只是存在个问题:
思路:通过集合的唯一性计算特殊符号的数量。
但当密码长度大于等于16时,我输入字母,数字和多个特殊字符组合,但并没有显示密码程度为高。
求解。
代码如下。
节点判断我已经写好了。
请告诉我思路或是否是程序问题等的错误,尽量不要改好写代码回复我。
要是还有什么问题,请回复我,不要帮我改好!(想锻炼思维),谢谢配合。
characters = ['~','!','@','#',','%','^','&','*','()','_','=','-','/',',','.','?','<>',';',':','[]','{}','|','\\']
active = True
while(active):
password = input('请输入需要检查的密码组合:')
length = len(password)
couting = 0
past_count = set()
if password.count(' ') > 0:
print('输入格式错误')
else:
if length <= 8:
print('''您的密码安全级别评定为:低
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位''')
print('assert length<8')
elif password.isalnum():
print('''您的密码安全级别评定为:低
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位''')
print('assert isalnum')
elif 8 < length < 16:
for ct in range(len(password)):
if password in characters:
past_count.add(password)
couting = len(past_count)
print('assert 8 < length <16')
if couting >= 2:
print('''您的密码安全级别评定为:中
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位''')
else:
print('''您的密码安全级别评定为:低
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位''')
elif length >= 16:
for ct in range(len(password)):
if password in characters:
past_count.add(password)
couting = len(past_count)
print('assert length > 16')
if couting >= 3:
if password.istitle():
print('''您的密码安全级别评定为:高
请继续保持''')
else:
print('''您的密码安全级别评定为:中
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位''')
elif 2 <= couting < 3 :
print('''您的密码安全级别评定为:中
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位''')
elif couting <= 1:
print('''您的密码安全级别评定为:低
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位''')
else:
print('未知错误')
guess = input('是否继续输入(y/n):')
guess = guess.upper()
if guess == 'Y':
continue
elif guess == 'N':
break
else:
print('输入异常,强制退出')
break
可以发一下大于16个字符的代码段吗?
请输入需要检查的密码组合:/*-/*-/*-/*-/*-/
assert length > 16
您的密码安全级别评定为:高 请继续保持 逃兵 发表于 2020-11-25 19:21
可以发一下大于16个字符的代码段吗?
iwyui285278\ywytu.qytuq{}
这个 逆鳞丶樱之羽 发表于 2020-11-25 19:27
iwyui285278\ywytu.qytuq{}
这个
没有发现,我只发特殊符号,没有字母没有数字
却认为我是高级密码吗{:10_277:} 逃兵 发表于 2020-11-25 19:46
没有发现,我只发特殊符号,没有字母没有数字
却认为我是高级密码吗
好的。
谢谢,我已经改好了,但上个问题还存在,要是有想到什么,请回复我。 逆鳞丶樱之羽 发表于 2020-11-25 21:13
好的。
谢谢,我已经改好了,但上个问题还存在,要是有想到什么,请回复我。
想整简单点还是复杂点呢{:10_277:}
请输入需要检查的密码组合:iwyui285278\ywytu.qytuq{}
assert length > 16
您的密码安全级别评定为:中
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位
是否继续输入(y/n):
输入异常,强制退出
>>> length
25
>>> couting
2 可以用正则进行匹配 逃兵 发表于 2020-11-26 08:17
想整简单点还是复杂点呢
这里为什么不是三个特殊符号啊,为什么couting是2,是characters变量中'\\'(这个表示反斜杠)这个的问题吗? 逆鳞丶樱之羽 发表于 2020-11-26 11:27
这里为什么不是三个特殊符号啊,为什么couting是2,是characters变量中'\\'(这个表示反斜杠)这个的问题吗 ...
再给你点提示
请输入需要检查的密码组合:iwyui285278\ywytu.qytuq{}
assert length > 16
您的密码安全级别评定为:中
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不能低于16位
是否继续输入(y/n):
输入异常,强制退出
>>> past_count
{'.', '\\'} 逃兵 发表于 2020-11-26 12:37
再给你点提示
好的,我知道为什么了
页:
[1]