为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯709654 2021-03-13 11:11:09
所以我正在尝试使用for循环和拼接创建一个函数,该函数输出如下所示的单词:wwoworwordwordworwow我正在尝试学习有关定义函数的信息,因此我想使用一个允许同时输入正向和反向的函数。如果我使用“返回”功能,则我的代码会提前终止。如果我不使用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')
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

只是做direction('forward')而不是print direction('forward')。 direction已经照顾好了printing本身。尝试执行print direction('forward')将仅执行direction('forward')(打印出wwo等),然后打印出的返回值direction('forward'),即None,因为它不返回任何内容,也没有理由使其返回任何内容。


查看完整回答
反对 回复 2021-03-29
?
开满天机

TA贡献1786条经验 获得超13个赞

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


查看完整回答
反对 回复 2021-03-29
  • 2 回答
  • 0 关注
  • 310 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信