2009-02-11 10 views
24

Attualmente, sto cercando di ottenere un metodo in Python per restituire un elenco di zero, una o due stringhe da inserire in un formattatore di stringhe e quindi passali al metodo stringa. Il mio codice simile a questa:Restituisce una tupla di argomenti da alimentare 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)) 

Quando provo a eseguire questo codice, il compilatore dà un IndexError: indice di tupla fuori portata.
Come devo strutturare il valore restituito per passarlo come argomento a .format()?

risposta

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

Ti manca solo la stella: D

+2

È fantastico. Qual è la definizione dell'operatore * in questo contesto? –

+12

Spacchetta la tupla, ad esempio da "(a, b, c)" a "a, b, c". –

+1

Questo mi ha fatto impazzire, grazie! – erbaker

1

Questo tenta di utilizzare "carte" come input di formato singolo per la stampa, non il contenuto delle carte.

Prova qualcosa di simile:

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