下面是我正在做的小程序
构建密码检查器。它将接受字符串输入。条件:密码字符串必须包含至少一个大写,一个小写,一个数字和长度必须是最少8个字符。否则它会说“无效密码”。
我正在尝试下面的代码
password = str(raw_input("Enter the password: "))
if password.isalnum() == False:
print "Password should contain atleast one special character or number"
if password.isalnum() == False:
print "Password should contain atleast one numeric number"
elif len(password)<8:
print 'Too short'
elif password.isupper() == False:
print 'Password should contain atleast one uppercase character'
elif password.islower() == False:
print 'Password should contain atleast one lowercase character'
else:
print "Password is OK"但这是不一致的,它要求大写,即使在那里,
Enter the password: niswdgER41
Password should contain atleast one uppercase character发布于 2017-10-01 14:55:32
您有几个错误,但最重要的是使用检查整个字符串是否保持条件的所有方法,而不是一次它的字符。
改为:
def validate_password(pwd):
conds = [
lambda s: any(x.isupper() for x in s),
lambda s: any(x.islower() for x in s),
lambda s: any(x.isdigit() for x in s),
lambda s: len(s) >= 8
]
return all(cond(pwd) for cond in conds)但是,如果您确实希望用户知道缺少什么,可以使用以下实现:
def validate_password(pwd):
conds = {
"uppercase": lambda s: any(x.isupper() for x in s),
"lowercase": lambda s: any(x.islower() for x in s),
"number": lambda s: any(x.isdigit() for x in s),
"length": lambda s: len(s) >= 8
}
valid = True
for name, cond in conds.iteritems():
if not cond(pwd):
print "Password lacking " + name
valid = False
if valid:
print "Password OK"
else
print "Password Invalid"
return valid发布于 2017-10-01 14:51:22
可以使用列表理解来检查字符串中的所有字符:
contains_upper_case_character = any([letter.isupper() for letter in password])
# contains_upper_case_character is True if password contains an uppercase letter.如果您想将其扩展到更多的大写字母:
password = 'StrinG12'
upper_case_letters = [letter.isupper() for letter in password].count(True)
print(upper_case_letters)
>>> 2发布于 2017-11-10 11:05:33
def checkpassword ():
password = input ("please enter password")
def menu ():
print ("1. Check Password")
print ("2. Generate Password")
print ("3. Quit")
optionchoice = input (" please chose a menu,1,2,3")
if optionchoice == "1":
checkpassword()
elif optionchoice == "2":
pass
elif optionchoice == "3":
pass
else :
print ("invalid answer!")
menu()
menu() https://stackoverflow.com/questions/46513506
复制相似问题