我正在看freecodecamp.org在python上的youtube教程,导师正在构建一个将所有元音翻译成g的翻译器。我不明白如何用+“ g”替换字符,而不是仅仅将其添加到变量字符串的末尾,而且输入如何应用于翻译变量?感谢所有帮助。
有问题的视频:https://www.youtube.com/watch?v=rfscVS0vtbw 2:58:00
def function(phrase):
translation = ""
for letter in phrase:
if letter in "AEIOUaeiou":
translation = translation + "g" **<-----how does this replace the letter with g and not just add g to the end of the string?**
else:
translation = translation + letter
return translation
print(function(input("Enter a phrase: ")))
答案 0 :(得分:0)
什么都不会替换,因为translation
是逐个字符创建的,而不是作为phrase
的副本开始的。
鉴于function("foobar")
,每一步的translation
值将为
translation = "" # initially
translation = "f" # add f
translation = "fg" # add g, not o
translation = "fgg" # add g, not o
translation = "fggb" # add b
translation = "fggbg" # add g, not a
translation = "fggbgr" # add r
(仅供参考,使用string
模块更容易进行此类翻译:
>>> import string
>>> string.translate("foobar", string.maketrans("AEIOUaeiou", "gggggggggg"))
'fggbgr'
)
答案 1 :(得分:0)
它由于您的if ...
else: ...
条件而“替换”。当条件匹配时(字母是元音),它将附加g(而不是实际字母),else
会附加实际字母。但是实际上,您是通过拼写创建一个新的字符串,如果不是元音,则附加字母,否则添加g
。
答案 2 :(得分:0)
那是因为该函数在新字符串translation
而不是phrase
上添加了“ g”。
translation = ""
表示translation
只是一个空白的空字符串。
if letter in "AEIOUaeiou":
translation = translation + "g"
表示:“如果字母是元音,请在translation
上加上“ g”。
else:
translation = translation + letter
表示:“如果字母不是元音,则将字母添加到字符串translation
中。”
return translation
表示输出translation
,而忘记了phrase
的全部内容。
最后,print
将结果打印出来。