Как красиво (и желательно понятно) решить задачу со строками и списками?

Доброго времени суток.
По тихоньку изучаю питон. Есть задача:
Написать функцию, аргументами которой являются string и list
Подробнее объясню на примере:
В качестве аргментов передаем secretWord = 'test' и lettersGuessed = [t, e, f, k]
На выходе функция должна вернуть строку с теми элементами secretWord, которые есть в letterGuessed. На месте отсутствующих элементов должны стоять прочерки '_'. Так же между всеми символами должны быть пробелы.
Я задачу решил, но жутко не красиво. Скажу сразу, с питоном только знакомлюсь, как и с программированием в целом. Совсем забыл, python версии 2.7.
Вот мое решение:
def getGuessedWord(secretWord, lettersGuessed):
    guessed = []                            # создаем новый пустой список (временный)
    for e in secretWord:                    
        if e in lettersGuessed:             # если символ в строке, то добавляем его в новый список
            guessed.append(e)
        else:                               # если нет, то ставим прочерк
            guessed.append('_')
    for i in range(len(guessed), 0, -1):    # таким способом я вставлял пробелы после символа (ничего другого не придумал)
        guessed.insert(i, ' ')
    guessed.pop(len(guessed)-1)             # т.к. предыдущая чать кода весьма идиотская, приходится лишний пробел удалять
    strGuessed = ''                         # собственно содаем строку и переносим в нее символы из временного списка
    for e in guessed:
        strGuessed += e
    return strGuessed

word = 'test'
gw = ['t', 'e', 'f', 'k']

print getGuessedWord(word, gw)


Если найдутся те, кому не лень расскажите, как нужно было решить задачу "по человечески".
  • Вопрос задан
  • 2402 просмотра
Решения вопроса 1
Вы, я думаю, сильно уж усложняете. Вот такое решение как? Или я неправильно понял задачу?

def get_guessed_word(secret_word, letters_guessed):
    return ' '.join(
        char if char in letters_guessed else '_'
        for char in secret_word
    )

print get_guessed_word('test', ['t', 'e', 'f', 'k'])


Возвращает

t e _ t

P. S. Имена переменных и функций в Python принято писать в нижнем регистре через знак подчёркивания.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы