变量和字符串集中混淆

时间:2018-11-28 14:58:55

标签: python variables concatenation

我正在看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: ")))

3 个答案:

答案 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将结果打印出来。