检查字符串是否包含整数 python

check if string contains an integer python

我需要检查密码中输入的字符是否包含整数。

password = input("Enter a password:" )
for num in password:
    if num.isdigit():
        break
    else:
        print("Your password must contain a number.")

上面的代码不起作用,因为我假设由于 python 3 将每个用户输入作为一个字符串,它检查字符串并且永远不知道字符串和整数之间的区别细绳。我该如何解决这个问题?

您的代码将为每个非数字字符打印 Your password must contain a number.。您需要知道密码中是否有数字,然后再决定其有效性。所以你可以使用一个布尔变量,然后如果在密码中找到任何数字字符,变量将是 True 并且在 for 循环之后你将使用它来检查密码的有效性。

你可以这样做:

password = input("Enter a password:" )
good_pass = False

for num in password:
    if num.isdigit():
        good_pass = True
        break

if good_pass == True:
    print('Good password!')
else:
    print("Your password must contain a number.")

如果您取消缩进 else 使其成为 for 的一部分,您的代码可以正常工作:

for num in password:
    if num.isdigit():
        break
else:
    print("Your password must contain a number.")

如果它是 if 的一部分,则 else 出现在每个非数字字符上;如果它是 for 的一部分,它会在循环结束时发生 如果循环从未中断 ,这就是您想要的行为。

编写相同支票的更简单方法是使用 any 函数(“如果没有任何数字...”):

if not any(num.isdigit() for num in password):
    print("Your password must contain a number.")

或等效于 all(“如果所有字符都不是数字...”):

if all(not num.isdigit() for num in password):
    print("Your password must contain a number.")