【课后作业14讲】密码安全性检查程序改进
本帖最后由 KAKA学python 于 2021-2-6 22:41 编辑在原代码基础上,如果想加入一个:”不是高级密码就要重新输入并检测直到是高级密码为止“的功能,该如何实现
小白刚开始学~~求大佬带hhhh
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
hard = 0
password = input('请输入需要检查的密码:')
length = len(password)
if length <= 8:
print('您的密码安全级别评定为:低\n请按以下方式提升密码等级:\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
elif length < 16:
for each in password:
if each in nums:
hard += 1
break
for each in password:
if each in chars:
hard += 1
break
for each in password:
if each in symbols:
hard += 1
break
if hard >= 2:
print('您的密码安全级别评定为:中\n请按以下方式提升密码等级:\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
if hard < 2:
print('您的密码安全级别评定为:低\n请按以下方式提升密码等级:\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
else:
for each in password:
if each in nums:
hard += 1
break
for each in password:
if each in chars:
hard += 1
break
for each in password:
if each in symbols:
hard += 1
break
if hard == 2:
print('您的密码安全级别评定为:中\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
if hard < 2:
print('您的密码安全级别评定为:低\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
if hard > 2:
if password in chars:
print('您的密码安全级别评定为:高\n请继续保持^^')
else:
print('您的密码安全级别评定为:低\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
你高中低的标准时什么?其实只要一个函数不就好了么,函数返回 1 2 3分别代表 低 中 高 symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
def isTrue(passwords,kinds):
for i in passwords:
if i in kinds:
return True
#判断函数,如果 passwords 中包含有该 kinds 中返回 True
def isHigh(passwords):
if len(passwords) < 16:
return False
#如果密码长度不足,返回False
elif not isTrue(passwords,chars):
return False
#如果密码首字母不是英文开头,返回False
elif not isTrue(passwords,symbols):
return False
#如果密码不包含特殊字符,返回False
elif not isTrue(passwords,nums):
return False
#如果密码不包含数字,返回False
else:
return True
#如果全部包含返回True
while True:
password = input('请输入需要检查的密码,输入 X 退出:')
if password in "Xx":
print('退出')
break
if isHigh(password):
print('您的密码安全级别评定为:高\n请继续保持^^')
continue
#break
#如果满足条件想退出 改为 break 即可
else:
print('您的密码安全级别不够,请按照以下规则修改\n1.密码必须由数字、字母及特殊字符三种组合\n2.密码只能由字母开头\n3.密码长度不能低于16位')
continue
#check.py
i = str(input('请输入需要坚持的密码组合 '))
a = """~!@#$%^&*()_=-/,.?<>;:[]{}|\
"""
b = '0123456789'
c = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
o = 0
p = 0
q = 0
for each in i:
if each in a:
o += 1
for each in i:
if each in b:
p += 1
for each in i:
if each in c:
q += 1
while i:
iflen(i) == p or len(i) == q or len(i) <= 8:
print("""您的密码安全级别评定为:低
请按以下方式提升您的密码安全级别:
1. 密码必须由数字、字母及特殊字符三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位
""")
if (len(i) == (o+p)or len(i) == (o+q) or len(i) == (p+q) or len(i) == o+p+q)and len(i) != o and len(i) != p and len(i) != q and (16 > len(i) >8):
print("""您的密码安全级别评定为:中
请按以下方式提升您的密码安全级别:
1. 密码必须由数字、字母及特殊字符三种组合
2. 密码只能由字母开头
3. 密码长度不能低于16位
""")
if len(i) == (o+p+q) and (i in c) and len(i) >= 16:
print("""您的密码安全级别评定为:高
请继续保持
""")
str(input('请输入需要坚持的密码组合 ')) 本帖最后由 傻眼貓咪 于 2021-9-4 14:26 编辑
代碼:
limit = 16
caps = +
digits =
symbols = ++
def check(p: 'passwords') -> bool:
if len(p) < limit:
return False
elif ord(p) not in caps:
return False
return (any()\
and any()\
and any())
print(check(input('請輸入密碼:\n')))
輸入/輸出結果:
請輸入密碼:
fsdfdsf5643564354%^$^&%%*HGFDFJ
True
請輸入密碼:
&*%abc
False
页:
[1]