我希望此功能读取密码,并检查其中是否至少有一个数字。如果没有,则需要返回False。我需要使用带有范围功能的for循环,这就是我所拥有的:
def hasNum(password):
for i in range(0,len(password),1):
if password == str('0123456789'):
return True
else:
return False
我尝试了不同的变化,这让我发疯了。有人可能会向菜鸟解释他们做错了什么吗?
答案 0 :(得分:2)
如果密码为0123456789
,则循环测试一次;如果它与该字符串匹配,则返回True
,否则将直接返回False
。 range(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)