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

2024-03-28 14:59:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个函数,它使用for循环和isupper方法来只打印字符串的大写字母。

到目前为止我所做的:

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

但这不管用?有人告诉我为什么吗? 我得到这个错误消息:“unbundlocalerror:local变量'upper_chars'在赋值之前被引用”


Tags: 方法函数字符串intrueonlyforif
2条回答

代码中的几个问题:

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

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

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

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

相关问题 更多 >