更好的方法来反转字符串的情况

时间:2014-10-15 15:03:25

标签: python

我正在学习python并参加练习:

  

的字符串。创建一个函数,该函数将返回与输入字符串类似的另一个字符串,但其大小写已反转。例如,输入“Mr. Ed”将导致“mR.DD”作为输出字符串。

我的代码是:

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)

有没有更好的方法来解决它?我的解决方案似乎很奇怪。

7 个答案:

答案 0 :(得分:98)

您可以使用name.swapcase()执行此操作。查找string methods

答案 1 :(得分:15)

你的解决方案非常好。 但是,你不需要三个分支,因为str.upper()无论如何都会在上层不适用时返回str。

使用生成器表达式,可以缩短为:

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

答案 2 :(得分:7)

只需使用swapcase()方法:

name = "Mr.Ed"
name = name.swapcase()

输出:mR.eD

- >这只是一个两行代码。

说明:
方法swapcase()返回字符串的副本,其中所有基于案例的字符都已交换案例。

快乐的编码!

答案 3 :(得分:1)

name='Mr.Ed'
print(name.swapcase())

答案 4 :(得分:1)

在python中,存在一个内置函数swapcase(),该函数自动转换每个字母的大小写。即使输入了大小写字母的混合字母,它也将正确处理并按预期返回答案。

这是我的代码:

    str1=input("enter str= ")
    res=str1.swapcase()
    print(res)

答案 5 :(得分:0)

https://github.com/suryashekhawat/pythonExamples/blob/master/string_toggle.py

    def toggle(mystr):
        arr = []
        for char in mystr:
            if char.upper() != char:
                char=char.upper()
                arr.append(char)
            else:
                char=char.lower()
                arr.append(char)
        return ''.join(map(str,arr))
    user_input = raw_input()
    output = toggle(user_input)
    print output

答案 6 :(得分:0)

#the following program is for toggle case
name=input()
for i in name:
    if i.isupper():
        print( i.lower(),sep='',end='')
    else:
        print( i.upper(),sep='',end='')