如果字符串中的字符连续出现三次,我如何 return False
How can I return False if a character in a string appears three times in a row
这个问题我以前也问过,虽然好心的Whosebug网友的回答是对的,但是有点没法回答我的问题,或者对我这样的初学者来说有点复杂,所以我再问一遍: ).
所以这里是一个代码,用于检查字符串是否符合特定条件....
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
所以这部分工作正常。我的初始代码没问题。但是,我正在尝试编辑我的代码,以便如果 一个数字、字符或字母连续出现 3 次。例如,AAA 或 ccc 或 111 或 ###,输出将为假
这是我的尝试,完全没有用...
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
我应该在我的代码中更改什么以确保它有效?
请尽可能使用最简单的编码形式,因为我是初学者,我想在编程时一起学习 :)。另外请不要使用 import
或 collections.iter
因为我还没有学会...我正在在线学习 python 但我还没有学到那么多.. 谢谢你:)
这里是一个函数,它将一个字符串作为输入,如果任何字符连续出现三次,则将 return true
,否则将 return false
:
def does_char_appear_three_times_in_a_row(input_string):
last_char = ''
count = 0
for c in input_string:
if c == last_char:
count += 1
else:
count = 1
if count == 3:
return True
last_char = c
return False
一个简单的实现是:
def check_repeating_chars(password):
for i in range(2, len(password)):
if password[i] == password[i-1] == password[i-2]:
return False
return True
你可以检查这个:
any(char * 3 in password
for char in password)
或者你的风格:
for char in password:
if char * 3 in password:
return False
您的代码无法按您希望的方式运行,因为 password.count(char)
统计 所有 次 char
。做您想做的事情的可能方法是:
def check_char(password):
for n in range(0, (len(password)-2)):
if (password[n] == password[n+1]) and (password[n] == password[n+2]):
return False
return True
但我建议改用 Regex。
我想到了以下想法:
qtt = 0
last_char = None
for char in password:
if char == last_char:
qtt += 1
else:
qtt = 0
if qtt == 2:
return False
last_char = char
遍历字符串中的每个字符,然后将其与最后一个字符进行比较,如果它们相同则计数,如果不相同,则必须重新开始计数,因此将 0 传递给 qtt
.如果 qtt
等于 2,你发现 2 个 last_chars 等于字符,它给你 3 个相同字符的序列。最后,您将 last_char 更改为实际的字符,因此下一次它将是 last_char 并且 for 将为您提供一个新的。我希望 a 足以说明问题。
这个问题我以前也问过,虽然好心的Whosebug网友的回答是对的,但是有点没法回答我的问题,或者对我这样的初学者来说有点复杂,所以我再问一遍: ).
所以这里是一个代码,用于检查字符串是否符合特定条件....
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
所以这部分工作正常。我的初始代码没问题。但是,我正在尝试编辑我的代码,以便如果 一个数字、字符或字母连续出现 3 次。例如,AAA 或 ccc 或 111 或 ###,输出将为假
这是我的尝试,完全没有用...
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
我应该在我的代码中更改什么以确保它有效?
请尽可能使用最简单的编码形式,因为我是初学者,我想在编程时一起学习 :)。另外请不要使用 import
或 collections.iter
因为我还没有学会...我正在在线学习 python 但我还没有学到那么多.. 谢谢你:)
这里是一个函数,它将一个字符串作为输入,如果任何字符连续出现三次,则将 return true
,否则将 return false
:
def does_char_appear_three_times_in_a_row(input_string):
last_char = ''
count = 0
for c in input_string:
if c == last_char:
count += 1
else:
count = 1
if count == 3:
return True
last_char = c
return False
一个简单的实现是:
def check_repeating_chars(password):
for i in range(2, len(password)):
if password[i] == password[i-1] == password[i-2]:
return False
return True
你可以检查这个:
any(char * 3 in password
for char in password)
或者你的风格:
for char in password:
if char * 3 in password:
return False
您的代码无法按您希望的方式运行,因为 password.count(char)
统计 所有 次 char
。做您想做的事情的可能方法是:
def check_char(password):
for n in range(0, (len(password)-2)):
if (password[n] == password[n+1]) and (password[n] == password[n+2]):
return False
return True
但我建议改用 Regex。
我想到了以下想法:
qtt = 0
last_char = None
for char in password:
if char == last_char:
qtt += 1
else:
qtt = 0
if qtt == 2:
return False
last_char = char
遍历字符串中的每个字符,然后将其与最后一个字符进行比较,如果它们相同则计数,如果不相同,则必须重新开始计数,因此将 0 传递给 qtt
.如果 qtt
等于 2,你发现 2 个 last_chars 等于字符,它给你 3 个相同字符的序列。最后,您将 last_char 更改为实际的字符,因此下一次它将是 last_char 并且 for 将为您提供一个新的。我希望 a 足以说明问题。