Python 在字符串中交换案例

Python 在字符串中交换案例,python,string,python-3.x,Python,String,Python 3.x,我正在尝试解决,它要求将所有小写字母转换为大写字母,反之亦然 我尝试使用以下代码: def swap_case(s): length = len(s) i=0 while length: if s1[i].isupper(): s[i].lower() elif s[i].islower(): s[i].upper() length-=1 i+=1 re

我正在尝试解决,它要求将所有小写字母转换为大写字母,反之亦然

我尝试使用以下代码:

def swap_case(s):
    length = len(s)
    i=0
    while length:
        if s1[i].isupper():
            s[i].lower()
        elif s[i].islower():
            s[i].upper()
        length-=1
        i+=1
    return s

if __name__ == '__main__':
    s = input()
    result = swap_case(s)
    print(result)

但是,返回的字符串与传递到函数中的字符串相同。错误在哪里?

正如@Julien在注释
upper
lower
中所述,方法返回一个副本,并且不更改对象本身。看


EDIT@aryamcarthy提醒我python中已经存在用于此类任务的功能:
swapcase()
方法。查看更多。注意,这也会返回字符串的副本。

如注释和其他答案中所述,字符串是不可变的

请尝试以下操作:

s = input("Enter input: ")


def convert(ss):
    # Convert it into list and then change it
    newSS = list(ss)
    for i,c in enumerate(newSS):
        newSS[i] = c.upper() if c.islower() else c.lower()
    # Convert list back to string
    return ''.join(newSS)

print(s)
print(convert(s))

# Or use string build in method
print (s.swapcase())
内置程序已经做到了这一点

def swap_case(s):
    return s.swapcase()
试试这个

def交换案例:
l=[]
str1=''
对于s中的i:
如果i.isupper():
l、 追加(i.lower())
埃利夫岛()
l、 追加(i.upper())
其他:
l、 附加(i)
返回(str1.join(l))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
s=输入()
结果=交换案例
打印(结果)

Python-3内置swapcase函数

def swap_case(s):
    return s.swapcase()

if __name__ == '__main__':
    s = input()
    result = swap_case(s)
    print(result)
输入:

"Pythonist 3"
输出:

"pYTHONIST 3"
def交换案例:
a=“”
对于s中的i:
如果i==i.lower():
a=a+(i.上()
其他:
a=a+(i.下部()
报税表(a)

**在这个问题中,我使用了一个名为“string”的模块,在这个模块中有大写字母的属性,而小写字母**

字符串是不可变的
s[i].upper()
返回
s[i]
的大写“copy”,它不修改
s[i]
本身。您需要完全创建一个新的字符串对象……就像@Julien提到的那样,您实际上并没有更改原始字符串。考虑使用另一个变量来保存每一个新的更新,并返回新的变量,对于它的值,Python已经有一个内置函数,它是这样的:<代码> ST.SWAPCASE()/<代码>。这能回答你的问题吗?我已经赞扬了你的评论,但不幸的是这些都没有任何名声。“朱利安考虑添加一个详细的答案。评论并没有增加rep.@Julien如果你的话是为了回答这个问题,也许你应该发布一个答案而不是评论这个问题。工作很快。谢谢,欢迎光临!您可以选择,您应该(重新)阅读帮助主题,了解如何做出贡献。您应该始终解释您的代码和答案,以便其他人可以从中获益。“Just code”答案的质量很差,将来可能会被删除,这会使您的工作完全无用。或者您也可以使用return s.swapcase()请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题。带有解释的答案通常更有帮助,质量更好,更容易吸引选票。欢迎来到Stack Overflow。对于堆栈溢出,不鼓励使用仅代码的答案,因为它们没有解释堆栈溢出是如何解决问题的。请编辑您的答案,以解释代码的作用以及它如何回答问题,这样对于其他有类似问题的用户也很有用,而且OPIt最好在堆栈溢出时为您发布的代码添加说明。
def swap_case(s):
    return s.swapcase()

#or you can use list comprehension 

def swap_case(s):
    new=[ch.lower() if ch.isupper() else ch.upper() for ch in s]
    new=''.join(new)
    return new

if __name__ == '__main__':
    s = input()
    result = swap_case(s)
    print(result)
def swap_case(s):
    l = list(s)
    for i in range(len(s)):
        if l[i].islower():
            l[i] = l[i].upper()
        else:
            l[i] = l[i].lower()
    k = "".join(map(str,l))
    return k
def swap_case(s):
    new = ""
    for i in range(len(s)):
        if str.isupper(s[i]):
            new = new + str.lower(s[i])

        elif str.islower(s[i]):
            new = new + str.upper(s[i])

        else:
            new = new + str(s[i])
        
    return (new)

if __name__ == '__main__':
    s = input()
    result = swap_case(s)
    print(result)
def swap_case(s):
    list_s= list(s)
    for index,char in enumerate(list_s):
        if char == char.lower():
            list_s[index] =char.upper()
        else:
            list_s[index]= char.lower()
            s = ''.join(list_s)
    return s

string = 'HackerRank.com presents "Pythonist 2".'
print(swap_case(string))
import string

upalf = string.ascii_uppercase

lowalf = string.ascii_lowercase

def swap_case(s):
    new = ""
    for i in s:
        if i in upalf:
            new += i.lower()
        elif i in lowalf:
            new += i.upper()
        else:
            new += i
    return new

if __name__ == '__main__':
    s = input()
    result = swap_case(s)
    print(result)