How can I invert (swap) the case of each letter in a string?

python

Solution

Your solution is perfectly fine. You don't need three branches though, because `str.upper()` will return str when upper is not applicable anyway.

With generator expressions, this can be shortened to:

>>> name = 'Mr.Ed'
>>> ''.join(c.lower() if c.isupper() else c.upper() for c in name)
'mR.eD'

Problem

I am learning Python and am working on this exercise: Create a function that will return another string similar to the input string, but with its case inverted. For example, input of "Mr. Ed" will result in "mR. eD" as the output string. My code is: ``` name = 'Mr.Ed' name_list = [] for i in name: if i.isupper(): name_list.append(i.lower()) elif i.islower(): name_list.append(i.upper()) else: name_list.append(i) print(''.join(name_list)) ``` Is there a simpler or more direct way to solve it?

Original source