1

我的代码可以在这里找到: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每张印刷品末尾的 ?为什么会在那里?代码有什么问题?

4

3 回答 3

3

似乎喜欢story.print_story()不返回任何东西。

如果函数不返回,则返回None.

>>> def a():
...     print 1
...
>>> print a()
1
None

print从中删除print story.print_story()

于 2013-08-18T07:45:29.070 回答
0

看起来你print_story没有返回任何东西。只需替换print story.print_story()story.print_story().

这是正在发生的事情的一个例子:

>>> def print_story():
...     print "story"
... 
>>> print print_story()
story
None
>>> print_story()
story
于 2013-08-18T07:45:41.857 回答
0

代码中的所有函数调用都替换为函数的返回值。默认情况下,所有函数都返回 None。如果你的函数中有一个 return 语句,那么 return 语句中指定的值将被返回而不是 None。

在这一行:

print story.print_story()

函数调用:

story.print_story()

替换为 print_story() 的返回值。print_story() 方法中没有 return 语句,所以它默认返回 None,给你这个:

print None
于 2013-08-18T07:46:40.580 回答