Python 为什么不是';我的for循环不适用于我的表达式吗?

Python 为什么不是';我的for循环不适用于我的表达式吗?,python,python-3.x,for-loop,Python,Python 3.x,For Loop,我想让这个函数读取密码,并检查它是否至少有一个数字。如果不是,则需要返回False。我需要将for循环与range函数一起使用,这就是我所拥有的: def hasNum(password): for i in range(0,len(password),1): if password == str('0123456789'): return True else: return False 我尝试过不同的变化,这让我发疯。有人能向新手解释他们做错了

我想让这个函数读取密码,并检查它是否至少有一个数字。如果不是,则需要返回False。我需要将for循环与range函数一起使用,这就是我所拥有的:

def hasNum(password):
for i in range(0,len(password),1):
    if password == str('0123456789'):
        return True
    else:
        return False
我尝试过不同的变化,这让我发疯。有人能向新手解释他们做错了什么吗?

如果密码是
0123456789
,循环测试一次;如果它与该字符串匹配,则返回
True
,否则直接返回
False
范围(0,len(密码),1)
是写入
范围(len(密码))
的复杂方法;同样地,
str('0123456789')
也是一种复杂的书写方式

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

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

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

这可以通过
任意
来简化:

def has_digit(password):
    return any(ch.isdigit() for ch in password)
如果密码为
0123456789
,则循环测试一次;如果它与该字符串匹配,则返回
True
,否则直接返回
False
范围(0,len(密码),1)
是写入
范围(len(密码))
的复杂方法;同样地,
str('0123456789')
也是一种复杂的书写方式

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

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

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

这可以通过
任意
来简化:

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

我一直在考虑使用[]运算符,但我似乎也无法使用它。我一直在考虑使用[]运算符,但似乎也无法使用它。Gah打赌我会使用它,删除我的,你的回答涵盖了所有内容。我认为实际上,“我会为你编写代码”这类回答对于一个可能会有显著改进的问题(也就是说,它不太可能在当前的应用程序中帮助任何人)是一个非常糟糕的主意。使网站更糟。@pvg您应该回答一些问题:D@Antti这实际上对我帮助很大。我觉得这件事太复杂了。当我花很长时间思考某件事时,我倾向于这样做。非常感谢。Gah打赌我会的,删除了我的,你的涵盖了一切。我认为实际上,“我会为你编写代码”这样的答案对于一个可能会显著改进的问题(即,它不太可能在当前的时间内帮助任何人)是一个非常糟糕的主意。使网站更糟。@pvg您应该回答一些问题:D@Antti这实际上对我帮助很大。我觉得这件事太复杂了。当我花很长时间思考某件事时,我倾向于这样做。非常感谢你。