Python: как вернуть перенос строки в функции

def linebreak(fruits):
    '''
    >>> fruits = 'apple banana pear'
    >>> linebreak(fruits)
    apple
    banana
    pear
    '''
    response = ''
    for fruit in fruits.split():
        response += fruit + '\n'

    return response

if __name__ == '__main__':
    import doctest
    doctest.testmod()

Expected:
    apple
    banana
    pear

Got:
    'apple\nbanana\npear\n'

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

1 ответ

>>> linebreak(fruits) показывает repr() возвращаемого значения, которое является строкой Python.

Что вы хотите >>> print linebreak(fruits) который на самом деле печатает содержимое возвращенного значения вместо его repr:

>>> 'foo\nbar'
'foo\nbar'
>>> print 'foo\nbar'
foo
bar

К вашему сведению, вся ваша функция может быть упрощена в одну строку:

return '\n'.join(fruits.split())
Другие вопросы по тегам