使用for循环定义函数时返回“none”

时间:2013-06-01 04:25:25

标签: python function for-loop return

所以我尝试使用for循环和拼接创建一个函数,打印出这样的单词:

w
wo
wor
word
word
wor
wo
w

我正在尝试学习定义函数,所以我想使用一个允许输入正向和反向的函数。如果我使用"返回"功能,我的代码提前终止。如果我不使用return函数,我会得到一个" 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 个答案:

答案 0 :(得分:2)

只需direction('forward')代替print direction('forward')direction已经处理了print本身。尝试执行print direction('forward')只会执行direction('forward')(打印出wwo等),然后打印出direction('forward')的返回值,即None,因为它没有返回任何东西,也没有理由退回任何东西。

答案 1 :(得分:1)

您的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