尝试使用列表理解和枚举来交换字符串中每个字符的大小写



我正在尝试获取一个字符串,检查字符串中的每个字符,并将大小写换成相反的大小写。例如,'Seoul'将变为'sEOUL'。(我意识到Python的内置str.swapcase方法是存在的,但我正试图将其重新实现为一种学习练习。(

这是我的密码。

str = "My name is Shah, and I recently went to Mission Nightclub"
str_arr = [str.upper[0] + str.upper[1:] if str[index].islower() else str[index].lower for (index, val) in enumerate(str.split)]
print(str_arr)

这个想法是我使用enumerate和列表理解。首先,它获取整个字符串并将其拆分为一个列表,其中每个元素都是一个单词。然后,它将使用enumerate来获取列表中每个元素的索引。然后我有两个条件:一个条件是检查第i个字符是否为小写,如果是,它会将其转换为大写;否则它将转换为小写。然后,对于创建的新列表中的每个第i个元素,它将使用字符串切片将第一个元素和元素的其余部分大写,以获得单词中的其余字符。

然而,我得到了这个错误:

Traceback (most recent call last):
File "/Users/shah/test.py", line 2, in <module>
str_arr = [str.upper[0] + str.upper[1:]if str[index].islower() else str[index].lower for (index, val) in enumerate(str.split)]
TypeError: 'builtin_function_or_method' object is not iterable

为什么我的代码不起作用,我该如何修复它?

Python提供了一个内置的方法:

>>> a = 'Seoul'
>>> print(a.swapcase())
sEOUL

最新更新