2009-02-11 11 views
24

Actualmente, estoy intentando obtener un método en Python para devolver una lista de cero, una o dos cadenas para conectarlo a un formateador de cadenas, y luego pasarlos al método de cadena. Mi código es como la siguiente:Devuelve una tupla de argumentos para alimentar a string.format()

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

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

Cuando trato de ejecutar este código, el compilador da una IndexError: Índice tupla fuera de rango.
¿Cómo debería estructurar mi valor de retorno para pasarlo como argumento al .format()?

Respuesta

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

Le falta sólo el estrella: D

+2

Eso es increíble. ¿Cuál es la definición del operador * en este contexto? –

+12

Desempaca la tupla, por ejemplo de "(a, b, c)" a "a, b, c". –

+1

Esto acaba de hacer mi maldito día, gracias! – erbaker

1

Esto intenta utilizar "tarjetas" como entrada de formato único para imprimir, no el contenido de las tarjetas.

Pruebe algo como:

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