014 课后练习求助 关于“密码安全性检查的代码“”
014 课后练习,写一个密码安全性检查的代码,课后答案我理解了,但是我想多实现一个功能:原题目基本上设定了所有的特殊字符“~!@#$%^&*()_=-/,.?<>;:[]{}|\”, 我想设定特殊字符仅允许其中的一部分,比如允许输入的特殊字符范围为“~!@#$%^&*()” ,输入其他的特殊字符会报错。
我草拟的代码如下,运行起来会有BUG,达不到预期。我感觉逻辑上的确有问题,但是又没有办法,想请教下各位大神。。。。
str1 = """~!@#$%^&*()"""
str2 ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWZYZ"
str3 ="0123456789"
i = True
password = input("请输入需要检查的密码组合:")
while i == True:
for each in password:
if (each not in str1) and (each not in str2) and (each not in str3):
print("密码包含无效特殊字符,请更换密码")
password = input("请输入需要检查的密码组合:")
i = True
else :
i = False
if len(password) <8 or password.isdigit()== True or password.isalpha()== True:
print("""您的密码安全级别评定为:低
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不低于16位""")
剩下部分省略。。。。。
原题目
0. 请写一个密码安全性检查的代码代码:check.py
str1 = """~!@#$%^&*()"""
str2 ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWZYZ"
str3 ="0123456789"
while True:
password = input("请输入需要检查的密码组合:")
for each in password:
if (each not in str1) and (each not in str2) and (each not in str3):
print("密码包含无效特殊字符,请更换密码")
break
else:
break str1 = """~!@#$%^&*()"""
str2 ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWZYZ"
str3 ="0123456789"
while True:
password=input("请输入需要检查的密码组合:")
for each in password:
if not (each in str1 or each in str2 or each in str3):
print("密码包含无效特殊字符,请更换密码")
continue
break
if len(password)<8 or password.isdigit() or password.isalpha():
print("""您的密码安全级别评定为:低
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字母开头
3.密码长度不低于16位""")
由于特殊字符的密码只在中级和高级密码处出现,所以您可以在满足中级或高级密码的情况下,设置条件来进行判断。 永恒的蓝色梦想 发表于 2020-3-31 21:22
感谢回复,但是第11行用 continue, 实际代码跑起来,会达不到效果, 2楼的答案跑起来是OK的
我刚学PYTHON, 冒昧说下我的理解:
第11行,continue 写在for循环最后一句,相当于没有写。代码跑起来会出现,输入的字符里,有多少不符合要求的字符,就会打印多少次“密码包含无效特殊字符,请更换密码”
如果用continue, 那无论如何,for 循环一定会跑完所有each, 之后就会执行 break, 跳出整个while,也就是这段代码 不会再次历经while 循环,出现让人重新输入密码组合 Cminglyer 发表于 2020-4-1 20:14
感谢回复,但是第11行用 continue, 实际代码跑起来,会达不到效果, 2楼的答案跑起来是OK的
我刚学 ...
啊啊啊……写代码的时候没带脑子{:10_262:},你的理解是正确的,感谢你的指正
页:
[1]