0

所以我正在尝试使用 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')
4

2 回答 2

2

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

于 2013-06-01T04:39:13.100 回答
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函数现在返回 a generator,您可以循环并打印值。


或者,您可以根本不使用print

>>> direction('forward')

w
wo
wor
word
于 2013-06-01T04:39:04.997 回答