【发布时间】:2022-01-01 06:03:37
【问题描述】:
所以我创建了这段代码,它接受一个列表并根据它们是否满足这些条件返回 True 或 False。这是我的代码
def passwordlength(password: str):
upper = digit = special = False
for char in password:
if char in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" :
upper = True
elif char in "1234567890":
digit = True
elif char in "$#@%!":
special = True
return upper and digit and special
def passwordOK(password: str):
if passwordlength(password):
if not (6 < len(password) < 12):
return False
else:
return True
return False
现在我想添加一个新的转折点,即如果列表中的任何字母、数字、字符连续出现 3 次,结果将返回 False.. 这是我的尝试...
def passwordlength(password: str):
upper = digit = special = False
for char in password:
if char in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" :
upper = True
elif char in "1234567890":
digit = True
elif char in "$#@%!":
special = True
return upper and digit and special
def passwordOK(password: str):
if passwordlength(password):
if not (6 < len(password) < 12):
return False
for char in password:
if password.count(char) > 3:
return False
return True
return False
但是,这显然根本不起作用..我在这里做错了什么? 我的代码应该是什么才能使我的输出正确??
【问题讨论】:
-
想想你将如何在纸上做到这一点。你会跟踪你读过的前一个字符;如果下一个字符相同,那么您将设置一个心理“标志”,指示如果下一个字符也相同,则连续有 3 个相同字符。这种想法应该很容易转化为代码。如果您将来遇到类似的事情,请意识到代码是将逻辑和结构化思维转移到计算机中的一种方式。所以,如果你能推理出一个任务,你就可以把它写成代码。