2012-12-16 3 views
7

J'écris un programme pour afficher des informations sur les pays dans un format de table. Cela a fonctionné parfaitement bien quand j'avais 3 pays, mais en changeant à 10 (et régler tous les codes nécessaires en conséquence) a donné lieu à l'erreur, « indice de Tuple hors de portée » dans la ligne:Python - "tuple index out of range"

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)) 

Répondre

10

Vous devez passer dans un nombre correspondant d'arguments pour vos emplacements de format. Votre chaîne de format a 10 emplacements, mais vous ne transmettez que 3 valeurs.

Réduite à 4 emplacements de format, avec seulement trois arguments à .format(), montre la même erreur:

>>> '{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   ' 

Quand je suis passé dans 4 arguments du .format() appel réussit. Je suis également confronté à ce problème et j'essaie de résoudre ce problème en bouclant sur un élément d'une colonne (je passe un tableau à deux dimensions), puis en construisant la chaîne basée sur

+0

Ah oui, je vois ce que j'ai mal fait. Merci! – keirbtre

0

sur ça. donc je me retrouve avec une chaîne comme

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

Les éléments que je veux mettre en forme que je mets dans un tuple. mais quand je fais

template.format(tuple_variable) 

il renvoie une erreur que l'indice de tuple est hors de portée

probablement parce qu'elle est passe maintenant un tuple d'un tuple à la fonction, qui a un élément, le tuple

Je n'ai pas encore trouvé comment résoudre ce problème, mais suivez le thread si vous avez besoin de plus d'informations à ce sujet.

Questions connexes