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

Problem with changing lowercase letters to uppercase and vice versa using str.replace

好的,这是我的代码,我不想使用内置的 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"))

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)

使用列表理解和三元表达式修改字母(参见Does Python have a ternary conditional operator?

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

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"))