【发布时间】:2021-05-18 08:47:00
【问题描述】:
编写一个名为 password_check 的函数。 password_check 应该将单个字符串作为输入。它应该返回一个布尔值:如果密码是根据以下规则的有效密码,则为 True,否则为 False。如果字符串满足以下所有条件,则该字符串是有效密码:
- 长度必须至少为 8 个字符。
- 它必须至少包含以下每个类别中的一个字符:大写字母、小写字母、数字和标点符号。对于标点符号,可接受以下标点符号:!@#$%&()-_[]{};':",./?
- 不得包含任何不属于上述四个类别的字符。这包括上述项目符号中未列出的任何标点符号、空格和任何其他字符。
解决这个问题的方法之一:
def password_check(as_string):
uppercase = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
lowercase = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
punctuation = ["!","@","#","$","%","&","(",")","-","_","[","]","{","}",";","'",":",",",".","/","<",">","?"]
number = ["1","2","3","4","5","6","7","8","9", "0"]
cup = 0
low = 0
num = 0
punc = 0
for i in as_string:
if i in uppercase:
cup+=1
elif i in lowercase:
low+=1
elif i in number:
num+=1
elif i in punctuation:
punc+=1
return (cup>=1) and (low>=1) and (num>=1) and (punc>=1) and len(as_string)>=8
print(password_check("tHIs1sag00d.p4ssw0rd."))
print(password_check("3@t7ENZ((T"))
print(password_check("2.shOrt"))
print(password_check("all.l0wer.case"))
print(password_check("inv4l1d CH4R4CTERS~"))
是否有任何优化提示,可能不需要创建列表...? 谢谢。
【问题讨论】:
-
正则表达式。
-
欢迎来到Stack Overflow。由于您似乎有工作代码并且正在寻找一般改进,这似乎更适合CodeReview - 不过请务必先检查他们的question guide。