我的代码可以在这里找到:https://github.com/thekarangoel/HackerNewsAPI/blob/master/hn.py
测试案例如下:
from hn import HN
hn = HN()
for story in hn.get_top_stories()[:10]:
print story.print_story()
print '*' * 50
print ''
这样输出我的输出:
.....
.....
.....
**************************************************
Rank: 3
Story ID: 6231993
Title: Pipe Dream? 3D-Printed Model of Hyperloop Created
Link: http://news.yahoo.com/pipe-dream-3d-printed-model-hyperloop-created-192033757.html
Domain: yahoo.com
Points: 1
Submitted by: evo_9
Number of comments: 0
Link to comments: http://news.ycombinator.com/item?id=6231993
None
**************************************************
Rank: 4
Story ID: 6231992
Title: What colour are your bits?
Link: http://ansuz.sooke.bc.ca/entry/23
Domain: bc.ca
Points: 1
Submitted by: grey-area
Number of comments: 0
Link to comments: http://news.ycombinator.com/item?id=6231992
None
.....
.....
请注意每次打印结束时的None
?为什么会这样?代码有什么问题?
答案 0 :(得分:3)
似乎喜欢story.print_story()
不返回任何内容。
如果函数未返回,则返回None
。
>>> def a():
... print 1
...
>>> print a()
1
None
从print
删除print story.print_story()
。
答案 1 :(得分:0)
看起来你的print_story
没有返回任何内容。只需将print story.print_story()
替换为story.print_story()
。
以下是正在发生的事情的一个例子:
>>> def print_story():
... print "story"
...
>>> print print_story()
story
None
>>> print_story()
story
答案 2 :(得分:0)
代码中的所有函数调用都被函数的返回值替换。所有函数默认返回None。如果函数中有return语句,则返回return语句中指定的值而不是None。
在这一行:
print story.print_story()
函数调用:
story.print_story()
由print_story()的返回值替换。 print_story()方法中没有return语句,因此默认情况下它返回None,为您提供:
print None