Возвращает none при определении функции с циклом for

Поэтому я пытаюсь создать функцию, использующую для циклов и сплайсинга, которая выводит слово, как это:

w
wo
wor
word
word
wor
wo
w

Я пытаюсь узнать об определении функций, поэтому я хочу использовать функцию, которая позволяет вводить как прямое, так и обратное направления. Если я использую функцию возврата, мой код заканчивается рано. Если я не использую функцию возврата, я получаю "none". Как я могу избавиться от ни одного?

Спасибо

word = raw_input('Enter word to be spelled: ')
wordlength = len(word)
def direction(x):
    """Type direction of word to be spelled as str, forward or reverse."""

    if x == 'reverse':
        for x in range(wordlength, 0, -1):
            print word[:x]

    if x == 'forward':
        for x in range(0, wordlength + 1):
            print word[:x]           


print direction('forward')
print direction('reverse')

2 ответа

Решение

Просто делать direction('forward') вместо print direction('forward'), direction уже заботится о printИнг сам. Пытаюсь сделать print direction('forward') просто выполнит direction('forward') (распечатка w, woи т. д.), а затем распечатайте возвращаемое значение direction('forward'), который None, поскольку он ничего не возвращает, и нет никаких причин возвращать что-либо.

Ваш direction функция не return что-нибудь, и поэтому по умолчанию None, Вот почему, когда вы печатаете функцию, она возвращает None, Ты можешь использовать yield:

def direction(x):
    """Type direction of word to be spelled as str, forward or reverse."""
    if x == 'reverse':
        for x in range(wordlength, 0, -1):
            yield word[:x]
    elif x == 'forward': # Also, I changed the "if" here to "elif" (else if)
        for x in range(0, wordlength + 1):
            yield word[:x]

Тогда вы бы запустили его так:

>>> for i in direction('forward'):
...     print i
... 

w
wo
wor
word

direction функция теперь возвращает generator, который вы можете просмотреть и распечатать значения.


Или вы можете просто не использовать print:

>>> direction('forward')

w
wo
wor
word
Другие вопросы по тегам