为什么我的for循环不适用于我的表达式?

时间:2017-06-25 20:24:31

标签: python-3.x for-loop

我希望此功能读取密码,并检查其中是否至少有一个数字。如果没有,则需要返回False。我需要使用带有范围功能的for循环,这就是我所拥有的:

def hasNum(password):
for i in range(0,len(password),1):
    if password == str('0123456789'):
        return True
    else:
        return False

我尝试了不同的变化,这让我发疯了。有人可能会向菜鸟解释他们做错了什么吗?

1 个答案:

答案 0 :(得分:2)

如果密码为0123456789,则循环测试一次;如果它与该字符串匹配,则返回True,否则将直接返回Falserange(0, len(password), 1)是一种写range(len(password))的复杂方式;同样str('0123456789')是一种复杂的写作方式'0123456789'

您需要迭代每个字符,如果是数字,则返回True;如果没有,则返回False

def has_digit(password):
    for character in password:
        if character.isdigit():
            return True

    return False

最后的return False 循环之外 - 我们必须在返回False之前检查密码中的每个字符。

这可以通过any简化:

def has_digit(password):
    return any(ch.isdigit() for ch in password)