我正在尝试获取一个字符串,检查字符串中的每个字符,并将大小写换成相反的大小写。例如,'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