Подтвердить что ты не робот

Вернуть кортеж аргументов, которые нужно передать в string.format()

В настоящее время я пытаюсь получить метод в Python, чтобы вернуть список нулевой, одной или двух строк, чтобы подключиться к форматированию строк, а затем передать их методу string. Мой код выглядит примерно так:

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

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

Когда я пытаюсь запустить этот код, компилятор дает индекс IndexError: tuple вне диапазона.
Как я должен структурировать возвращаемое значение, чтобы передать его в качестве аргумента для .format()?

4b9b3361

Ответ 1

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

Вам не хватает только звезды: D

Ответ 2

Формат предпочтительнее, чем оператор%, начиная с его введения в Python 2.6: http://docs.python.org/2/library/stdtypes.html#str.format

Также гораздо проще просто распаковать кортеж с помощью * - или dict с помощью ** - вместо того, чтобы изменять строку формата.

Ответ 3

Это попытка использовать "карты" как одноформатный ввод для печати, а не содержимое карт.

Попробуйте что-то вроде:

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