gpt4 book ai didi

python - 如何遍历字符串中的所有字符,然后检查是否有字符包含小写、大写、数字和标点符号并返回 True

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:46 24 4
gpt4 key购买 nike

我试图检查一个字符串是否包含任何小写、大写、数字或标点符号,如果有则返回 True,但每当我运行它时,代码只检查第一个字符。我迭代错误吗?

我尝试创建条件来检查字符是否为小写、大写、数字或标点符号,如果是则返回 true。否则返回 false。

这就是我现在所拥有的:

def check_characters(password, characters):
'''Put your docstring here'''
for i in password:
if i.islower():
return True
if i.isupper():
return True
if i.isdigit():
return True
if i.punctuation():
return True
else:
return False



def main():

password = "n11+"
print(check_characters(password, ascii_lowercase))
print(check_characters(password, ascii_uppercase))
print(check_characters(password, digits))
print(check_characters(password, punctuation))

如果字符包含小写字母,我希望它返回 True ,对于其他函数调用也是如此,但实际输出全部为 True ,而它应该只对小写字母、数字和标点符号为 true

最佳答案

您将在第一次迭代后返回;另外,您没有使用您的 characters 参数。

只有在 characters 中遇到字符时才需要返回 true。如果没有遇到任何此类字符,则返回 false:

from string import *

def check_characters(password, characters):
# convert to set for better performance
characters = set(characters)
for i in password:
if i in characters:
return True
return False


def main():
password = "n11+"
print(check_characters(password, ascii_lowercase))
print(check_characters(password, ascii_uppercase))
print(check_characters(password, digits))
print(check_characters(password, punctuation))

您可以使用 any 函数简化此操作:

def check_characters(password, characters):
# convert to set for better performance
characters = set(characters)
return any(i in characters for i in password)

无论如何,在这两种情况下,运行 main 将输出:

True
False
True
True

关于python - 如何遍历字符串中的所有字符,然后检查是否有字符包含小写、大写、数字和标点符号并返回 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55555791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com