【问题标题】:Checking if any character in a string is alphanumeric检查字符串中的任何字符是否为字母数字
【发布时间】:2017-10-18 19:37:40
【问题描述】:

我想检查字符串中是否有任何字符是字母数字。我为此编写了以下代码,并且运行良好:

s = input()

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

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

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

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

Traceback(最近一次调用最后一次): 文件“”,第 18 行,在 TypeError: 'bool' 对象不可迭代

【问题讨论】:

  • any 语句在您的两个函数中具有不同的作用域。在第二种情况下,您将any 应用于单个元素。

标签: python string alphanumeric


【解决方案1】:

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

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

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

这将更类似于您的第一个案例。

【讨论】:

  • 哦,明白了。所以我在使用单个元素和整个列表之间迷失了方向。谢谢!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-31
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多