我正在学习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: ")))
[letter = letter.lower()
仅适用于您在其中使用的行。如果要永久拥有它,则必须像这样分配它:
.lower()
letter = letter.lower()
仅适用于该行。您需要使用letter.lower()
更改letter
本身。
否,letter = letter.lower()
返回一个新的小写的letter.lower()
。 (在Python中,字符串是不可变的。)
您需要重新分配回名称letter
才能获得所需的行为:
letter
或者更好,首先将for letter in phrase:
letter = letter.lower()
if letter in "aeouiy":
...
的全部小写:
phrase