【问题标题】:How to check if all characters in a string are capitalized using a loop如何使用循环检查字符串中的所有字符是否大写
【发布时间】:2019-10-20 01:45:08
【问题描述】:

我正在尝试检查字符串中的每个字符是否大写。我必须使用循环,并且不能使用正则表达式。我的想法是循环检查每个字符是否都是大写的和已知的字符。如果它到达一个既不是大写又不是已知的字符,它退出循环并返回false,否则返回true。

        for i in range(len(s)):
            char = s[i]
            if is_capitalized(char):
                return True
            else:
                return False
                break
    else: 
        return False

这里是函数应该如何表现的文档字符串。 出于某种原因,is_all_caps('CHATte') 返回 True。

    >>> is_all_caps('HA')
    True
    >>> is_all_caps('CHAT')
    True
    >>> is_all_caps('CHATte')
    False

【问题讨论】:

  • 下面的python不需要for i in range(len(s)): char = s[i]可以直接用for x in s: if is_capitalized(x)遍历字符
  • "我必须使用循环,并且不能使用正则表达式" - 为什么?此外,这两种方法都不是解决问题的合适方法。字符串为此提供了自己的内置方法:例如'CHAT'.isupper().

标签: python string loops


【解决方案1】:

这是因为一旦函数返回一个值,它就结束并且不再继续。因此,一旦到达大写字符 (if is_capitalized(char)),它将返回 True,而不检查其余字符。

您可以利用这一点,并在看到无效字符后立即返回 False,如果 for 循环到达末尾,则您知道所有字符都必须有效(大写):

for i in range(len(s)):
    char = s[i]
    if not is_capitalized(char):
        return False

return True

【讨论】:

    【解决方案2】:

    您甚至不需要正则表达式。你可以像这样使用isupper()

    def is_all_caps(s):
        return all(char.isupper() for char in s)
    
    >>> is_all_caps('HA')
    True
    >>> is_all_caps('CHAT')
    True
    >>> is_all_caps('CHATte')
    False
    

    【讨论】:

      猜你喜欢
      • 2017-12-24
      • 2021-04-18
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2015-02-08
      • 1970-01-01
      • 2020-06-02
      相关资源
      最近更新 更多