使用str.replace将小写字母更改为大写字母,反之亦然的问题

问题描述 投票:0回答:2

好,所以这是我的代码,我不想使用内置的swapcase()方法。它不适用于给定的字符串。

def myFunc(a):
    for chars in range(0,len(a)):
        if a[chars].islower():
            a = a.replace(a[chars], a[chars].upper())
        elif a[chars].isupper():
            a = a.replace(a[chars], a[chars].lower())
    return a

print(myFunc("AaAAaaaAAaAa"))
python string replace uppercase lowercase
2个回答
0
投票

[replace更改所有字母,然后将值分配回a,因此最后所有大写字母都结束了。

def myFunc(a):
    # use a list to collect changed letters
    new_text = []
    for char in a:
        if char.islower():
            new_text.append(char.upper())
        else:
            new_text.append(char.lower())

    # join the letters back into a string
    return ''.join(new_text)

print(myFunc("AaAAaaaAAaAa"))  # aAaaAAAaaAaA

或更短:

def my2ndFunc(text):
    return ''.join( a.upper() if a.islower() else a.lower() for a in text)

0
投票

问题是您正在替换字符串中该字符的所有重复出现。在这里,您有一个可行的解决方案:

def myFunc(a):
    result = ''
    for chars in range(0,len(a)):
        print(a[chars])
        if a[chars].islower():
            result += a[chars].upper()
        elif a[chars].isupper():
            result += a[chars].lower()
    return result

print(myFunc("AaAAaaaAAaAa"))
© www.soinside.com 2019 - 2024. All rights reserved.