我正在研究一个简单的程序,它找到一个输入字符串中的所有大写字母。但是,我坚持让程序正常运行。我完成了大部分工作,但我不明白为什么它不起作用。
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个月的经验。任何帮助都是明确的!
答案 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()
函数只返回匹配字符串列表,因此我们得到一个大写字母列表。