检查字符串中的任何字符是否为字母数字

Checking if any character in a string is alphanumeric

我想检查字符串中的任何字符是否为字母数字。我为此编写了以下代码并且工作正常:

s = input()

temp = any(i.isalnum() for i in s)
print(temp)

我的问题是下面的代码,它与上面的代码有什么不同:

for i in s:
    if any(i.isalnum()):
        print(True)

for 循环迭代仍在第一个代码中发生,为什么它不抛出错误?第二个代码抛出:

Traceback (most recent call last): File "", line 18, in TypeError: 'bool' object is not iterable

any() 需要一个可迭代对象。这就足够了:

isalnum = False
for i in s:
    if i.isalnum():
        isalnum = True
        break
print(isalnum)

在第二个函数中,您将 any 应用于单个元素而不是整个列表。因此,如果字符 i 是字母数字,您将得到一个 bool 元素。

在第二种情况下,您不能真正使用 any,因为您使用的是单个元素。相反,你可以写:

for i in s:
    if i.isalnum():
        print(True)
        break

这将与您的第一个案例更相似。