Python 为什么 .lower() 不能在我的其余代码中永久应用?

Meh*_*bla -2 python string transform lowercase

我正在学习python,在课程中,我不得不制作一个将元音转换为字母“g”的翻译器。在程序中,我必须检查要翻译的短语是否有任何大写元音,以便用大写字母“G”替换它们。我不明白为什么.lower()不适用于其余的代码?在我看来,如果我letter.lower()在下一行应用,变量的值letter仍应为小写。这是我的代码:

def translate(phrase):
translated = ""
for letter in phrase:
    if letter.lower() in "aeouiy":
        if letter.isupper():
            translated = translated + "G"
        else:
            translated = translated + "g"
    else:
        translated = translated + letter
return translated
print(translate(input("enter phrase to translate into giraffe elegant language: ")))
Run Code Online (Sandbox Code Playgroud)

abh*_*ora 5

strings在Python是不可改变的。

字符串是 Unicode 代码点的不可变序列。

Python 中类的lower()方法str不会就地修改对象,而是返回一个新的 str 对象,其中所有字符都小写。

降低():

返回所有大小写字符转换为小写的字符串副本。对于 8 位字符串,此方法取决于语言环境。

也看看这个

所使用的小写算法在 Unicode 标准的第 3.13 节中描述。

您需要将 str 对象重新分配给lower()方法返回的对象。像这样:

letter = letter.lower()
Run Code Online (Sandbox Code Playgroud)