我有一个函数displayHand(),它看起来像这样:
def displayHand(hand):
"""
Displays the letters currently in the hand.
For example:
>>> displayHand({'a':1, 'x':2, 'l':3, 'e':1})
Should print out something like:
a x x l l l e
The order of the letters is unimportant.
hand: dictionary (string -> int)
"""
for letter in hand.keys():
for j in range(hand[letter]):
print letter, # print all on the same line
print # print an empty line
它是为我提供的(来自600x级)。如上所述,它需要字符串 - >>整数并打印出“手”。
我遇到的麻烦就是让它正确显示出来。当我尝试
print('Current Hand: ', displayHand(hand))
这就是我得到的:
a d d m o q y
('Current Hand: ', None)
由于这是由教师提供的,我确信代码是以这种方式编写的,而且有些东西我没有得到。
我想得到的是这样输出:
Current Hand: a d d m o q y
我对这些东西绝对是全新的,所以我甚至不知道要问什么问题。
我的评估:就我可以拼凑而言,displayHand()不会返回任何东西,这就是搞砸了所有东西。但是如何捕获此功能的打印输出并以我想要的方式呈现?我在想我应该尝试在字符串中捕获它并返回,但假设
教师试图展示一些东西,如何在不改变displayHand()方法的情况下做到这一点?
如果我的评估结束了,发生了什么?
编辑:这个功能是由班级给我的,我必须这样使用它。我知道更改它以返回str会更容易,但是如何在不这样做的情况下完成正确的输出?
进一步编辑:我正在处理一个自动编程器,它要求输出完全像我写的那样。很抱歉这么挑剔,我很感激答案,如果不是这样的话会使用它们。
最终编辑:感谢您的澄清 - 我将使用您的想法并在此函数中创建一个帮助函数,以完成我需要它做的事情!
最终决赛编辑:我想通了!我所要做的就是,
print('Current Hand:'),
displayHand(hand)
真正的最终编辑:
Hah! you got it too! thank you so much for the help, I appreciate it!
答案 0 :(得分:2)
您的功能已打印,但不会返回任何内容。
不要试图'捕获'打印输出,只需更改函数返回手,格式化为字符串:
def displayHand(hand):
letters = []
for letter, count in hand.iteritems():
letters.extend([letter] * count)
return ' '.join(letters)
给出:
>>> hand = {'a': 1, 'q': 1, 'd': 2, 'y': 1, 'm': 1, 'o': 1}
>>> displayHand(hand)
'a q d d y m o'
>>> print 'Current Hand:', displayHand(hand)
Current Hand: a q d d y m o
如果您不应该更改displayHand()
函数,那么在函数中使用相同的技巧,并且不要通过在print语句的末尾添加逗号来打印换行符:
print 'Current Hand:',
displayHand(hand)
答案 1 :(得分:2)
如果您必须使用提供的功能,并且不得尝试修复它,则可以执行此操作:
print('Current Hand: ', end='')
displayHand(hand)
我很困惑,你使用python 2还是3?
在python 2中:
print 'Current Hand" ',
displayHand(hand)
答案 2 :(得分:0)
首先,您的displayHand
函数不会返回任何内容,因此当您尝试打印其结果时,您会获得None
。您可能需要从函数中删除这些print
语句并返回字符串。
其次,你尝试使用print
作为一个函数,这在python 3中是可能的,而你似乎在使用python 2.如果是这种情况你需要删除print
语句周围的括号参数。
答案 3 :(得分:0)
如果您真的无法修改该功能,那么您可能希望在调用该功能之前将标准输出重定向到字符串,然后将其恢复正常。
这篇文章解释了如何做到这一点:Can I redirect the stdout in python into some sort of string buffer?