Переменная и путаница в цепочке - PullRequest
0 голосов
/ 28 ноября 2018

Я смотрю учебник YouTube по freecodecamp.org на python, и инструктор создает переводчик, который переводит все гласные в 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 голосов
/ 28 ноября 2018

Он "заменяет" из-за имеющегося у вас условия if ... else: ....Когда совпадение соответствует (буква является гласной), оно добавляет ag (не фактическую букву), else добавляет фактическую букву.Но на самом деле вы создаете новую строку из scracth, добавляя буквы такими, какие они есть, если они не являются гласными или g в противном случае.

0 голосов
/ 28 ноября 2018

Это потому, что функция добавляет «g» к новой строке translation, а не phrase.

translation = "" означает, что translation - это просто пустая пустая строка.

if letter in "AEIOUaeiou":
    translation = translation + "g"

означает, что: «если буква является гласной, добавьте« g »к translation».

else:
    translation = translation + letter

означает, что: «если буква не является гласной, добавьтебуква в строку translation ".

return translation означает вывод translation и забудет все о phrase.

Наконец, print выводит результат.

0 голосов
/ 28 ноября 2018

Ничто не заменяется, потому что 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'

)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...