Python编程 - 如何查找和列出输入字符串中的所有大写字母

时间:2016-12-10 02:43:51

标签: python for-loop

我正在研究一个简单的程序,它找到一个输入字符串中的所有大写字母。但是,我坚持让程序正常运行。我完成了大部分工作,但我不明白为什么它不起作用。

  import string

def string_upper(capz):
    BigLetters = input
    input = "Please enter a string"
    for char in capz:
        if char.isupper():
            BigLetters += char
    return BigLetters

print(string_upper)

请记住,我相对较新的Python,只有大约3个月的经验。任何帮助都是明确的!

4 个答案:

答案 0 :(得分:1)

试试这个,它会给你一个大写字母列表

def string_upper():
    big_letters = input("Enter String: ")
    uppers = [l for l in big_letters if l.isupper()]
    return uppers

if __name__ == '__main__':
    print(string_upper())

或在一行代码中

def find_caps():
    return [l for l in input("Enter String: ") if l.isupper()]

if __name__ == '__main__':
    print(find_caps())

如果您不想将其作为列表,则可以执行此操作以将其恢复为字符串

print("".join(find_caps()))

答案 1 :(得分:1)

HexxNine已经给了你一个很好的答案,但我会在你发布的内容上添加一些解释。

def string_upper():
    chars = input("Please enter a string: ")
    cap_chars = []
    for char in chars:
        if char.isupper():
            cap_chars += char
    return cap_chars


print(string_upper())

您不需要在开头添加导入字符串。如果您尝试从用户获取初始字符串,则函数string_upper也不需要任何参数。在Python 3中,输入是一个内置函数,其中对用户的查询提示("请输入字符串")需要是输入函数的参数(输入后括在括号中)。我创建了一个空列表cap_chars,然后用于存储任何大写字母。你不能在函数string_upper之前调用它,至少没有空括号,即如果函数没有接受任何参数,你需要使用string_upper(),如果它只需要一个参数,你需要使用string_upper(some_argument)。

如果您不希望用户输入成为函数的直接部分,您还可以将字符串作为参数传递或传递用户输入,如下所示:

def string_upper(chars):
    cap_chars = []
    for char in chars:
        if char.isupper():
            cap_chars += char
    return cap_chars


print(string_upper("ThiS iS a sTrInG"))  # just pass some string
print(string_upper(input("Please enter a string: ")))  # pass user input

HexxNine在他的解决方案中使用了列表理解,这是一种更优雅的方法,并且被视为" pythonic"因为,列表推导是使Python如此简洁的功能之一。您可能想要查找列表理解是什么。摆脱另一条线:

def string_upper():
    chars = input("Please enter a string: ")
    return [c for c in chars if c.isupper()]

print(string_upper())

这也可以,但不再具有可读性,所以我建议使用以前的解决方案:

def string_upper():
    return [c for c in input("Please enter a string: ") if c.isupper()]

print(string_upper())

答案 2 :(得分:0)

Str="hello World this is newBie"
import string
ref=[i for i in string.ascii_uppercase]
capitals=[i for i in Str if i in ref]
print capitals

这可能是更抽象的解决方案

答案 3 :(得分:0)

你可以这样做:

import re
your_input_string = "Hi, this is a Test String"
capitals = re.findall(r'[A-Z]{1}', your_input_string) # ['H', 'T', 'S']

我使用常规展开来匹配your_input_string中的大写字母。
[A-Z]会匹配任何大写字母,而{1}表示匹配单个字母。 findall()函数只返回匹配字符串列表,因此我们得到一个大写字母列表。

相关问题