2016-03-20 25 views
-4

Bir for döngüsünü kullanarak bir dizi (aslında bir dizi dizinin birleşimiyle) yineleme yapmaya çalışıyorum. İşte"for" dizisinde "i" için veri türü nedir?

for i in book1+book2+book3: 
    print i.pageno 

i tip kitabın bir nesnedir ve bu yüzden book1, book2 ve book3 içinde nesnelerdir.

Bu kodu çalıştırırken bir hata alıyorum.

AttributeError: 'int' object has no attribute 'pageno'

İthal edilen kitap sınıfında pageno'yu tanımladım.

+6

Bu, yinelenebilir öğedeki öğelerden birinin bir "int" olduğu anlamına gelir. 'Book1 + book2 + book3''e bir göz atın,' int 'değerini bulun ve sonra neden orada olduğunu ve nasıl kurtulacağını öğrenin. –

+0

Kodunuzun kitap sınıfı tanımını göstermesi ve muhtemelen bir kitap örneğini nasıl oluşturduğunuzun bir örneği varsa yardımcı olur. –

+0

Bu, yalnızca karşılaştığım durumu göstermek için oluşturduğum bir kod parçası. @TomKarzes – Deepthy

cevap

1

'i' türü, [book1..book3] türüne göre değişir, (book1 + book2 + book3) değerini kontrol etmenizi öneririm. senin birleştirilmiş dizi tamsayılar dizisi gibi

<type 'int'> 
<type 'int'> 
<type 'str'> 
1

görünüyor: gerçek tipini öğrenmek istiyorsanız , sen

for i in [1, 3, 'five']: 
    print type(i) 

çıkış .:, örneğin türü, (i) deneyebilirsiniz. Bir tam sayı nesnesinin varsayılan olarak bir pageno değişkeni yoktur.

+0

Bu soruya cevap veriyor. Muhtemelen cevap, postere bir soru içermemelidir, ancak bu sorunun cevabı gerçekten de "birleştirilmiş tamsayı dizinizdir" (veya en azından en az bir tane içerir). – GreenAsJade

0

kitabı * diziler içine aramaya deneyin:

print(type(book1), type(book2), type(book3)) 

ve neden olmasın, döngüye i tipini aramaya deneyin:

bs = book1 + book2 + book3 
for i in bs: 
    print(i, type(i)) 

şimdi kusur nokta olabilir: -

İlgili konular