2012-12-16 14 views
7

Sto scrivendo un programma per visualizzare informazioni sui paesi in un formato tabella. Ha funzionato perfettamente bene quando ho avuto 3 paesi, ma cambiarlo a 10 (e regolando tutto il codice necessario di conseguenza) ha provocato l'errore, "indice di Tuple fuori portata" nella riga:Python - "indice di tuple fuori intervallo"

print("{0:^20}{1:^20}{2:^20}{3:^20}{4:^20}{5:^20}[6:^20}{7:^20}{8:^20}{9:^20}".format(newcountrylist[i].country,newcountrylist[i].currency,newcountrylist[i].exchange)) 

risposta

10

è necessario passare in un numero di argomenti corrispondente per le aree di formattazione. La stringa di formato ha 10 slot, ma stai trasmettendo solo 3 valori.

ridotto a 4 slot formato, con solo 3 argomenti per .format(), mostra lo stesso errore:

>>> '{0:^20}{1:^20}{2:^20}{3:^20}'.format(1, 2, 3) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: tuple index out of range 
>>> '{0:^20}{1:^20}{2:^20}{3:^20}'.format(1, 2, 3, 4) 
'   1     2     3     4   ' 

Quando passai in 4 argomenti chiamata .format() riesce.

+0

Ah sì, vedo cosa ho fatto di sbagliato. Grazie! – keirbtre

0

Per rispondere a jon141: Sono anch'io di fronte a questo problema e sto cercando di risolvere questo problema eseguendo il loop su un elemento di una colonna (sto passando un array bidimensionale) e quindi costruendo la stringa basata su quello. così finisco con una stringa come

template="{0!s:10}{1!s:15}...{n!s:24} 

Gli elementi che voglio formattare ho messo in una tupla. ma quando lo faccio

template.format(tuple_variable) 

esso genera un errore che l'indice tupla è fuori portata

probabilmente perché è ora che passa una tupla di una tupla alla funzione, che ha un solo elemento, la tupla

Non ho ancora capito come risolverlo, ma segui lo thread se hai bisogno di maggiori informazioni su di esso.

Problemi correlati