Возвращает 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