2017-02-12 4 views
2

Поскольку я всего лишь новичок, я сделал небольшой переводчик Pig Latin с одним словом в Python 3.5. У меня есть мой грубый код, который работает, но мне очень нравятся ваши мнения о том, как сделать его более компактным, pythonic и «элегантным» (т. Е. Профессиональным). Любая помощь приветствуется, спасибо!«Очистка» базового переводчика Pig Latin в Python

#Converts a word into pig latin, needs to be cleaned up 
def pig_latin(word): 
    word = list(word) 
    first_letter = word[0] 
    del word[0] 
    word.insert(len(word),first_letter) 
    word.insert(len(word),'ay') 
    print(''.join(word)) 
+3

Ну для начала 'x.insert (LEN (х), у)' эквивалентно 'x.append (у)'. –

+1

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

+2

Поскольку у вас есть рабочий код, это может быть более подходящим для [обзора кода] (http://codereview.stackexchange.com/) –

ответ

2

Вам не нужно, чтобы преобразовать строку в список, делать некоторые магии с ним и преобразовать его обратно: если применить [1:] на строку, вы получите строку без первого символа. Таким образом, вы можете легко перевести его в:

def pig_latin(word): 
    print('%s%say'%(word[1:],word[0])) 

или что то же самое:

def pig_latin(word): 
    print('{}{}ay'.format(word[1:],word[0])) 

Здесь мы используем строку форматирования: поэтому мы заменим '%s%say' таким образом, что первый %s заменяется word[1:], а второй с word[0], а затем 'ay'.

Это создает:

>>> pig_latin('foobar') 
oobarfay 
+1

Я бы использовал '.format', чтобы сделать более понятным, что вы делаете. –

+2

Очень умный! Отличная идея, спасибо. – 9voltWolfXX