所以我尝试使用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')
答案 0 :(得分:2)
只需direction('forward')
代替print direction('forward')
。 direction
已经处理了print
本身。尝试执行print direction('forward')
只会执行direction('forward')
(打印出w
,wo
等),然后打印出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