【问题标题】:How to print only uppercase letters in Python using isupper( ) method?如何使用 isupper() 方法在 Python 中只打印大写字母?
【发布时间】:2014-03-23 00:11:40
【问题描述】:

我正在尝试编写一个函数,该函数使用 for 循环和 isupper 方法仅打印字符串的大写字母。

到目前为止我做了什么:

upper_chars = ""
def only_upper(s):
    for char in s:
        if s.isupper() == True:
        upper_chars += char
 print upper_chars

但这不起作用?有人告诉我为什么吗? 我收到此错误消息:“UnboundLocalError: local variable 'upper_chars' referenced before assignment”

【问题讨论】:

    标签: python string python-2.7


    【解决方案1】:

    您的代码中有几个问题:

    • 你应该在函数内部定义upper_chars变量
    • 在循环中,您应该对一个字符而不是整个字符串调用 isupper()
    • 你的函数应该返回一些东西
    • 你应该调用函数
    • if 块中的缩进错误

    以下是修复代码:

    def only_upper(s):
        upper_chars = ""
        for char in s:
            if char.isupper():
                upper_chars += char
        return upper_chars
    
    print only_upper("HeLLo WorLD")
    

    另外,你可以使用filter():

    def only_upper(s):
        return filter(lambda x: x.isupper(), s)
    
    print only_upper("HeLLo WorLD")
    

    或者:

    def only_upper(s):
        return "".join(c for c in s if c.isupper())
    
    print only_upper("HeLLo WorLD")
    

    两个打印:

    HLLWLD
    

    【讨论】:

    • 感谢您的回答。是否可以使用 for 循环和 isupper() 方法?
    • @user3451069 如果有帮助,请考虑accepting the answer。谢谢。
    • alecxe 的回答很棒,你应该接受它。目前,for-loop 变体可能最符合您的专业水平,但我强烈建议您暂时将过滤器和列表理解变体归档,并在准备好后再使用它们。
    • 另外,虽然在这样的小情况下很好,一般构建这样的字符串是昂贵的:字符串是不可变的,所以每次更新都会分配一个全新的字符串并抛出远离以前。最好使用一个可变的列表,并在最后将其转换为字符串。看起来像这样:upper_chars = [] ...upper_chars += char(或upper_chars.append(char))...print "".join(only_upper("HeLLo WorLD))。最后一条语句从only_upper(一个数组)中获取返回值,并通过将元素连接在一起使其成为一个字符串,中间有一个空字符串。
    【解决方案2】:

    解决部分问题的一种方法是确保您调用实际的函数,另一件事是确保您返回修改后的字符串,另外如果语句没有正确编写,函数的主体需要距离函数开头 4 个空格。

    使用 isupper 方法和 for 循环的示例

    def upperOnly(s):
        onlyCaps = ""
        for char in s:
            if char.isupper() == True:
                onlyCaps += char
        return onlyCaps 
    print upperOnly("TeSt")
    

    【讨论】:

      猜你喜欢
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2021-11-19
      • 2017-10-18
      相关资源
      最近更新 更多