打印在python
格式化字符串和函数调用我有一个功能,displayHand(),它看起来像这样:打印在python
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会容易得多,但是我怎么才能在没有这样做的情况下完成正确的输出?
进一步编辑:我处理,要求完全按照我写的输出autograder。对不起,如此挑剔,我很欣赏答案,如果不是这样的话,会使用它们。
最后编辑:感谢您的澄清 - 我会用你的想法,使这个函数做什么,我需要做一个内部的辅助函数!
FINAL final编辑:我想通了!我所要做的就是,
print('Current Hand:'),
displayHand(hand)
对于真正的最终编辑:
Hah! you got it too! thank you so much for the help, I appreciate it!
你已经功能打印,它不返回任何东西。
不要试图“抓”的打印输出,只需改变函数返回手,格式化字符串:
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 'Current Hand:',
displayHand(hand)
哈!我刚刚尝试过,并通过IDLE运行了这个确切的命令。但是,我需要输出为 当前手:a d v d s v – dislikesAppleCores 2013-03-08 17:12:54
@dislikesAppleCores:原始代码将永远不会写这样的手。这将是'一个dv v s'或类似的(你有多个组合在一起的卡片)。 – 2013-03-08 17:13:35
@dislikesAppleCores:除此之外,我没有看到我的代码与输出有什么不同。 – 2013-03-08 17:14:46
你可以做到这一点,如果你必须使用所提供的功能,不能设法解决它:
print('Current Hand: ', end='')
displayHand(hand)
我很困惑,你使用Python 2或3?
在Python 2:
print 'Current Hand" ',
displayHand(hand)
首先,你的displayHand
功能不会当您尝试打印其结果你得到None
返回任何东西左右。您可能需要从函数中删除这些print
语句,然后返回该字符串。
其次,你尝试使用print
作为一个函数,它可能在python 3中很有用,而你似乎在使用python 2.如果是这种情况,你需要删除围绕print
语句参数的括号。
如果您确实无法修改该功能,则可能需要在调用该函数之前将标准输出重定向到一个字符串,然后再将其设置回正常。
这篇文章介绍了如何做到这一点:Can I redirect the stdout in python into some sort of string buffer?
我想你的功能应该不是返回打印它们的值。 – Oli 2013-03-08 17:02:03