2012-12-16 22 views
7

Tablo formatındaki ülkeler hakkındaki bilgileri görüntülemek için bir program yazıyorum.Python - "aralık dışı dizinin kapsamı"

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

cevap

10

kazanmak için geçmeniz gereken: çizgide Ben 3 ülke varken mükemmel iyi çalıştı, ama 10'a değiştirmeyi (ve buna göre gerekli tüm kodunu ayarlama), yanlışlıkla "aralık dışında kayıt düzeni endeksi" sonuçlandı Biçim yuvalarınız için uygun sayıda argüman içinde. Biçim dizginiz 10 yuvaya sahiptir, ancak yalnızca 3 değerden geçiyorsunuz.

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

I .format() çağrı başarılı 4 argüman olarak oldu:

.format() sadece 3 bağımsız değişken ile, 4 formatında yuvalarına Azaltılmış, aynı hata gösterir.

+0

Ah evet, yanlış yaptığımı görüyorum. Teşekkürler! – keirbtre

0

jon141: adresinden bir okuyucu olarak da bu sorunla karşı karşıyayım ve bunu bir sütunun bir öğesinin (2 boyutlu bir diziden geçiyorum) üstünden geçirerek ve daha sonra dizeyi temel alarak çözmeye çalışıyorum Bu konuda. Yani ben demet içinde koymak biçimlendirmek istediğiniz

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

elemanları gibi bir dize ile bitirmek. ama tanımlama grubu endeksi aralık dışında bir hata atar

template.format(tuple_variable) 

yaptığınızda Muhtemelen artık bir eleman vardır fonksiyonu, tuplea tuple bir demet geçirerek çünkü

Henüz nasıl düzeltileceğine karar vermedim, ancak daha fazla bilgiye ihtiyacınız varsa thread 'u izleyin.

İlgili konular