如何使用isupper()方法在Python中只打印大写字母?

时间:2014-03-23 00:11:40

标签: python string python-2.7

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

到目前为止我做了什么:

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

但这不起作用?有谁告诉我为什么? 我收到此错误消息:“UnboundLocalError:在赋值之前引用的局部变量'upper_chars'”

2 个答案:

答案 0 :(得分:6)

代码中的几个问题:

  • 您应该在函数
  • 中定义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

答案 1 :(得分:0)

修复部分问题的方法是确保调用实际函数,另一件事是确保返回修改后的字符串,另外如果语句编写不正确,函数体需要从函数的开头是4个空格。

使用isupper方法和循环

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