猿问

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

所以我正在尝试使用for循环和拼接创建一个函数,该函数输出如下所示的单词:


w

wo

wor

word

word

wor

wo

w

我正在尝试学习有关定义函数的信息,因此我想使用一个允许同时输入正向和反向的函数。如果我使用“返回”功能,则我的代码会提前终止。如果我不使用return函数,则会得到“无”。我怎样才能摆脱无人?


谢谢


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')


慕斯709654
浏览 311回答 2
2回答

哔哔one

只是做direction('forward')而不是print direction('forward')。 direction已经照顾好了printing本身。尝试执行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... wwoworword该direction函数现在返回一个generator,您可以循环遍历并打印值。或者,您根本不能使用print:>>> direction('forward')wwoworword
随时随地看视频慕课网APP

相关分类

Python
我要回答