Return a tuple of arguments to be fed to string.format()

梦想的初衷 提交于 2019-11-27 12:45:22

问题


Currently, I'm trying to get a method in Python to return a list of zero, one, or two strings to plug into a string formatter, and then pass them to the string method. My code looks something like this:

class PairEvaluator(HandEvaluator):
  def returnArbitrary(self):
    return ('ace', 'king')

pe = PairEvaluator()
cards = pe.returnArbitrary()
print('Two pair, {0}s and {1}s'.format(cards))

When I try to run this code, the compiler gives an IndexError: tuple index out of range.
How should I structure my return value to pass it as an argument to .format()?


回答1:


print('Two pair, {0}s and {1}s'.format(*cards))

You are missing only the star :D




回答2:


Format is preferred over the % operator, as of its introduction in Python 2.6: http://docs.python.org/2/library/stdtypes.html#str.format

It's also a lot simpler just to unpack the tuple with * -- or a dict with ** -- rather than modify the format string.




回答3:


This attempts to use "cards" as single format input to print, not the contents of cards.

Try something like:

print('Two pair, %ss and %ss' % cards)


来源:https://stackoverflow.com/questions/539066/return-a-tuple-of-arguments-to-be-fed-to-string-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!