第十四课作业最后一题
#密码安全性检查代码#
#低级密码要求
#1.密码由单纯的数字或字母组成
#2.密码长度小于等于8位
#
#中级密码要求:
#1.密码必须由数字,字母或特殊字符(仅限:~!@%^&*()_=-/,.?<>;:[]{}/\)任何两种组合
#2.密码长度不能低于8位
#
#高级密码要求:
#1.密码必须由数字、字母及特殊字符(仅限:~!@%^&*()_=-/,.?<>;:[]{}/\)三种组合
#2.密码只能由字母开头
#3.密码长度不能低于16位
print("请输入需要检查的密码组合:",end="")
secret=input()
length=len(secret)
while True:
if secret.isdigit() or secret.isalpha() or length<=8:
print("您的密码评级为:低")
print("""#1.密码必须由数字、字母及特殊字符(仅限:~!@%^&*()_=-/,.?<>;:[]{}/\)三种组合
#2.密码只能由字母开头
#3.密码长度不能低于16位""")
break
if secret.isalnum() or length<16:
print("你的密码评级为:中")
print("""#1.密码必须由数字、字母及特殊字符(仅限:~!@%^&*()_=-/,.?<>;:[]{}/\\)三种组合
#2.密码只能由字母开头
#3.密码长度不能低于16位""")
break
secretson=","{","}","/","\\"]] #走到这里代表一定有字符
a=""
secretson1=a.join(secretson)
print(secretson1)
if secretson1.isdigit or secretson1.isalpha: ##############怀疑错误原因
print("你的密码评级为:中")
print("""#1.密码必须由数字、字母及特殊字符(仅限:~!@%^&*()_=-/,.?<>;:[]{}/\\)三种组合
#2.密码只能由字母开头
#3.密码长度不能低于16位""")
break
else:
print("你的密码评级为:高")
print("继续保持")
break
这是第十四课最后一题,错误原因可能是 if secretson1.isdigit or secretson1.isalpha:这一行,因为即使我输入aaaaaaaaaaaa111111!!!!!,它还是输出print("你的密码评级为:中")
print("""#1.密码必须由数字、字母及特殊字符(仅限:~!@%^&*()_=-/,.?<>;:[]{}/\\)三种组合
#2.密码只能由字母开头
#3.密码长度不能低于16位""")
在线等,谢谢 你想问啥?
看到了,抱歉,主要是太乱了,没看清 白two 发表于 2021-9-5 00:38
你想问啥?
我想问的是为什么我输入明明是等级高的密码,它也会走进 if secretson1.isdigit or secretson1.isalpha,
操作结果:请输入需要检查的密码组合:asdfghjasdfgh!!!!!!!!
asdfghjasdfgh
你的密码评级为:中5555
#1.密码必须由数字、字母及特殊字符(仅限:~!@%^&*()_=-/,.?<>;:[]{}/\)三种组合
#2.密码只能由字母开头
#3.密码长度不能低于16位 你看一下你最后 if 哪里,根本没有调用isdigit 和 isalpha 方法,要加括号的,第 19 行
print("请输入需要检查的密码组合:", end="")
# secret = input()
secret = 'aaaaaaaaaaaa111111!!!!!'
length = len(secret)
while True:
if secret.isdigit() or secret.isalpha() or length <= 8:
print("您的密码评级为:低")
break
if secret.isalnum() or length < 16:
print("你的密码评级为:中")
break
secretson = [i for i in secret if
not i in ["~", "!", "@", "%", "^", "&", "*", "(", ")", "_", "=", "-", "/", ",", ".", "?", "<", ">",
";", ":", "[", "]", "{", "}", "/", "\\"]]
a = ""
print(secretson)
secretson1 = a.join(secretson)
print(secretson1)
if secretson1.isdigit() or secretson1.isalpha():
print("你的密码评级为:中")
break
else:
print("你的密码评级为:高")
print("继续保持")
break
i'love'le'e 发表于 2021-9-5 00:50
我想问的是为什么我输入明明是等级高的密码,它也会走进 if secretson1.isdigit or secretson1.isalpha, ...
结果发错了,应该是这个:请输入需要检查的密码组合:aaaaaaaaaaaaa1111111!!!!!!
aaaaaaaaaaaaa1111111
你的密码评级为:中5555
#1.密码必须由数字、字母及特殊字符(仅限:~!@%^&*()_=-/,.?<>;:[]{}/\)三种组合
#2.密码只能由字母开头
#3.密码长度不能低于16位 本帖最后由 白two 于 2021-9-5 10:15 编辑
secret = 'aaaaaaaaaaaa111111!!!!!'
print(secret.isdigit)
<built-in method isdigit of str object at 0x00000246607E2E40>
你看哈,不加括号就是内置方法,而 python 只要不是 0 或 False ,就按 True 来处理,说一你那样写就相当于恒为 True 白two 发表于 2021-9-5 00:55
你看哈,不加括号就是内置方法,而 python 只要不是 0 或 False ,就按 True 来处理,说一你那样写 ...
但是它不是false吗?isdigit是检查str是不是全数字,而aaaaaaa1111!!!不是全数字啊 白two 发表于 2021-9-5 00:55
你看哈,不加括号就是内置方法,而 python 只要不是 0 或 False ,就按 True 来处理,说一你那样写 ...
哦懂了,谢谢大哥
页:
[1]