не могу вернуть значение

Я пытаюсь написать функцию, которая будет переводить ввод на так называемую «коровью латынь». Я хочу вернуть значения из оператора if, но всякий раз, когда я это делаю, я получаю синтаксическую ошибку. Я могу напечатать значение, но я хочу, чтобы функция также не возвращала None.

def cow_latinify_sentence(sentence):
    vowels = tuple('aeiou1234567890!@#$%^&*()-_=+|\\][}{?/.\',><`~"')
    sentence = sentence.lower()
    sentence_list = sentence.split()
    for i in range(len(sentence_list)):
        cow_word = sentence_list[i][:]
        if cow_word.startswith(vowels):
            print('{0}moo'.format(cow_word), end=' ')
        else:
            cow_word = sentence_list[i][1:] + sentence_list[i][:1]
            print('{0}oo'.format(cow_word), end=' ')

cow_latin = cow_latinify_sentence("the quick red fox")
print(cow_latin)

Короче говоря, как я могу получить функцию return вместо print?


person Marcus Boniface    schedule 20.04.2015    source источник
comment
Использовать оператор return?   -  person MattDMo    schedule 21.04.2015


Ответы (3)


Почему бы просто не заменить два экземпляра

print('{0}moo'.format(cow_word), end=' ')

с

return '{0}moo'.format(cow_word)+' '

Вы должны избавиться от end=; вам не нужно заменять новую строку, которая в противном случае следовала бы за выводом print, но если вам нужен пробел в конце возвращаемой строки, вам все равно придется добавить его самостоятельно.

person The name's Bob. MS Bob.    schedule 20.04.2015
comment
Когда я это делаю, мне кажется, что я получаю только первую букву из предложения. Большое спасибо за ваш быстрый ответ! Я очень ценю это. - person Marcus Boniface; 21.04.2015
comment
Операторы print происходят внутри цикла, поэтому returning сразу не сработает. - person TigerhawkT3; 21.04.2015

Вам нужно создать список для накопления результатов.

result = []

ваши два оператора печати в вашей функции должны быть изменены на result.append(XXXX). Затем, когда вы обработаете все предложение, вы можете

return (result)

или, чтобы преобразовать его в предложение:

return " ".join(result) + '.'
person Alan Hoover    schedule 20.04.2015
comment
Большое спасибо. Это имеет смысл - person Marcus Boniface; 21.04.2015

person    schedule
comment
Спасибо ооочень большое! Я новичок в python, как вы, вероятно, можете сказать, и потратил много времени, пытаясь заставить его вернуться. Это так полезно! - person Marcus Boniface; 21.04.2015