我的问题是设计一个 Python 脚本,要求用户输入密码,并让 Python 验证密码是否适合条件。
以下是用户输入密码的条件:
- 以字母开头
- 至少 6 个字符
- 密码中只允许使用字母、数字和 - 和 _
如果条件匹配,则输出 Yes。否则,不。
这些是我尝试过的:
from sys import exit
def check_alpha(input):
alphas = 0
alpha_list = "A B C D E F G H I J K L M N I O P Q R S T U V W X Y Z".split()
for char in input:
if char in alpha_list:
alphas += 1
if alphas > 0:
return True
else:
return False
def check_number(input):
numbers = 0
number_list = "1 2 3 4 5 6 7 8 9 0".split()
for char in input:
if char in number_list:
numbers += 1
if numbers > 0:
return True
else:
return False
def check_special(input):
specials = 0
special_list = "_-"
for char in input:
if char in special_list:
specials += 1
if specials > 0:
return True
else:
return False
def check_len(input):
if len(input) >= 6:
return True
else:
return False
def validate_password(input):
check_dict ={
'alpha':check_alpha(input),
'number':check_number(input),
'special':check_special(input),
'len':check_len(input)
}
if check_alpha(input) & check_number(input) & check_sprcial(input) & check_len(input)
return True
else:
print"No"
while True:
password = raw_input("Enter password:")
print
if validate_password(password):
print("Yes")
else
print("No")
或者:
import re
while True:
user_input = input("Please enter password:")
is_valid = False
if(len(user_input)<6):
print("No")
continue
elif not re.search("[a-z]",user_input):
print("No")
continue
elif not re.search("[0-9]",user_input):
print("No")
continue
elif re.search("[~!@#$%^&*`+=|\;:><,.?/]",user_input):
print("No")
continue
else:
is_valid = True
break
if(is_valid):
print("Yes")