? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???
? 1.判断密码是否大于8位数 2.判断密码是否由数字、大小写字母、其他字符组成 3.判断密码是否包含重复的、4位以上的子字符串,即4位子串是否重复 4.主函数 ?
# 判断密码是否大于8位
def check_len(pwd):
if len(pwd)>=8:
return True
else:
return False
# 检查密码是否有大小写字母,数字,其他字符组成
def check(pwd):
check = [0,0,0,0]
for char in pwd: # 遍历每一个密码字符
if char.islower():
check[0] = 1
if char.isupper():
check[1] = 1
if char.isdigit():
check[2] = 1
if not (char.isalpha()|char.isdigit()|char.isspace()):
check[3] = 1
print (check)
# 当列表中4个元素的值都是1,即各项之和是4,说明字符串符合条件(由大小写字母、数字、其他字符组成)
# 如果小于4,则不全符合条件
if sum(check) < 4:
return False
else:
return True
# 判断字符串是否包含重复的、4位以上的子串
def check_rep(pwd):
n = len(pwd)
for i in range(n-4):
str1 = pwd[i:i+4]
str2 = pwd[i+4::]
if str1 in str2:
return False
return True
# 主函數
if __name__ == '__main__':
meg="""
1.密碼必須由大小寫字母,數字,其他字符組成
2.密碼長度必須是8位大
3.重複不得包含長度為4的子串
"""
print(meg)
while True:
pwd = input('請輸入密碼:')
if pwd == 'q':
print('退出程序。。。')
break
vcheck1=check_len(pwd)
if not vcheck1:
print('密码长度不够')
continue
vcheck2 = check(pwd)
if not vcheck2:
print('密码不是由大小写字母,数字、其他字符组成、')
continue
vcheck3 = check_rep(pwd)
if not vcheck3:
print('密码含有2个以上重复子串')
continue
print('密码正确')
break
|