Jos*_*ley 1 python dictionary tuples list
我以前问过这个问题,虽然 StackOverflow 用户的回答是正确的,但它有点无法回答我的问题,或者对于像我这样的初学者来说有点复杂,所以我会再问一次:)。
所以这是一个检查字符串是否符合特定条件的代码......
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 password(password: str):
if passwordlength(password):
if not (6 < len(password) < 12):
return False
else:
return True
Run Code Online (Sandbox Code Playgroud)
所以这部分工作正常。我的初始代码没有问题。但是,我正在尝试编辑我的代码,以便如果数字、字符或字母连续出现 3 次..例如,AAA 或 ccc 或 111 或 ###,输出将为 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 password(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
Run Code Online (Sandbox Code Playgroud)
我应该在代码中更改什么以确保其有效?
请使用尽可能简单的编码形式,因为我是初学者,我想在编程时一起学习:)。另外请不要使用importorcollections.iter因为我还没有学会...我正在在线学习 python,但我还没有学到那么远...谢谢:)
你可以检查一下:
any(char * 3 in password
for char in password)
Run Code Online (Sandbox Code Playgroud)
或者根据您的风格:
for char in password:
if char * 3 in password:
return False
Run Code Online (Sandbox Code Playgroud)