Python -在字符串中查找所有大写字母



我是一个真正的python初学者,我正在尝试修改我在课程中看到的代码。我已经尝试找到所有大写字母的字符串。但问题是它只给了我一个大写字母,即使有不止一个。

def finding_upppercase_itterative(string_input):
for i in range(len(string_input)):
if string_input[i].isupper:
return string_input[i]
return "No uppercases found"

我应该如何修改这段代码给我所有的大写字母在给定的字符串。如果有人能给我解释一下背后的逻辑,我会很高兴的。

谢谢!

编辑1:感谢S3DEV,我输入了错误的二进制搜索算法。

如果您正在寻找使代码工作的小更改,一种方法是使用生成器函数,使用yield关键字:

def finding_upppercase_itterative(string_input):
for i in range(len(string_input)):
if string_input[i].isupper():
yield string_input[i]

print(list(finding_upppercase_itterative('test THINGy')))

如果你只打印finding_upppercase_itterative('test THINGy'),它会显示一个生成器对象,所以你需要把它转换成一个列表来查看结果。

有关生成器的更多信息,请参见:https://wiki.python.org/moin/Generators

这是为每个步骤编写的包含大量细节的固定代码。还有一些其他的答案,用更复杂的/"pythonic"的方法来做同样的事情。

def finding_upppercase_itterative(string_input):
uppercase = []

for i in range(len(string_input)):
if string_input[i].isupper():
uppercase.append(string_input[i])

if(len(uppercase) > 0):
return "".join(uppercase)
else:
return "No uppercases found"
# Try the function
test_string = input("Enter a string to get the uppercase letters from: ")
uppercase_letters = finding_upppercase_itterative(test_string)
print(uppercase_letters)

解释如下:

  1. 创建以string_input为参数的函数
  2. 创建一个名为uppercase
  3. 的空列表
  4. 循环string_input
  5. 中的每个字符
  6. [在循环中]如果是大写字母,将其添加到uppercase列表
  7. [跳出循环]如果uppercase列表的长度大于0
  8. [在if中]返回所有连接在一起的列表字符,没有作为分隔符("")
  9. [在else]中,否则,返回"没有找到大写字母">
  10. [out of the function]获取test_string并将其存储在变量
  11. test_string中获取uppercase_letters
  12. printuppercase_letters发送给用户

有更短(和更复杂)的方法来做到这一点,但这只是初学者更容易理解的一种方法。

Also:您可能想要修改您的拼写,因为它使代码更难阅读和理解,并且也使键入拼写错误的标识符的名称变得更加困难。例如,upppercaseitterative应该分别为uppercaseiterative

像这样简单的操作就可以了:

s = "My Word"
s = ''.join(ch for ch in s if ch.isupper())
return(s)

另一个StackOverflow问题背后的相反想法:从python字符串中删除大写字母

函数中的return语句将阻止函数的执行。当它发现一个大写字母时,它将看到返回语句并停止。

一种方法是在list后面添加字母并在末尾返回它们:

def finding_uppercase_iterative(string_input):
letters = []
for i in range(len(string_input)):
if string_input[i].isupper():
letters.append(string_input[i])
if letters:
return letters
return "No uppercases found"

最新更新