Python 为什么 .lower() 不能永久应用到我的其余代码中?
Python why doesn't .lower() apply permanently in the rest of my code?
我正在学习 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: ")))
Python中的strings
是不可变的。
Strings are immutable sequences of Unicode code points.
并且 Python 中 str
class 的 lower() 方法不会就地修改对象,而是 returns 一个新的 str 对象所有字符都小写。
Lower():
Return a copy of the string with all the cased characters converted to lowercase. For 8-bit strings, this method is locale-dependent.
参见this:
The lowercasing algorithm used is described in section 3.13 of the Unicode Standard.
您需要将 str 对象重新分配给 lower()
方法返回的对象。像这样:
letter = letter.lower()
.lower()
只适用于你正在使用它的线路。如果你想永久拥有它,你必须这样分配它:
letter = letter.lower()
letter.lower()
仅适用于该行。您需要将 letter
本身更改为 letter = letter.lower()
.
不,letter.lower()
returns 一个新的小写 letter
。 (在 Python 中,字符串是不可变的。)
您需要重新分配回名称 letter
以获得您想要的行为:
for letter in phrase:
letter = letter.lower()
if letter in "aeouiy":
...
或者更好的是,首先将 phrase
全部小写:
phrase = phrase.lower()
for letter in phrase:
...
我正在学习 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: ")))
Python中的strings
是不可变的。
Strings are immutable sequences of Unicode code points.
并且 Python 中 str
class 的 lower() 方法不会就地修改对象,而是 returns 一个新的 str 对象所有字符都小写。
Lower():
Return a copy of the string with all the cased characters converted to lowercase. For 8-bit strings, this method is locale-dependent.
参见this:
The lowercasing algorithm used is described in section 3.13 of the Unicode Standard.
您需要将 str 对象重新分配给 lower()
方法返回的对象。像这样:
letter = letter.lower()
.lower()
只适用于你正在使用它的线路。如果你想永久拥有它,你必须这样分配它:
letter = letter.lower()
letter.lower()
仅适用于该行。您需要将 letter
本身更改为 letter = letter.lower()
.
不,letter.lower()
returns 一个新的小写 letter
。 (在 Python 中,字符串是不可变的。)
您需要重新分配回名称 letter
以获得您想要的行为:
for letter in phrase:
letter = letter.lower()
if letter in "aeouiy":
...
或者更好的是,首先将 phrase
全部小写:
phrase = phrase.lower()
for letter in phrase:
...