Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
318
Tıklama
0
Öne Çıkarma
Python liste ve matrislerden anlayan varsa bakabilir mi?
L
7 yıl
Binbaşı
Konu Sahibi

Merhabalar linkte gördüğünüz kod ile uğraşıyorum. Oluşturmaya çalıştığım şey electre method. Hata veren kısım 3x2, 3x4 gibi satır sayısı sütün sayısından az olan matrislerde son sütunun ağırlığını isterken "IndexError: list assignment index out of range" hatasını veriyor.
Diğer tip matrislerde sorun olmuyor. Anlayanlar bir göz atabilir mi?
Python matris hata veren kod için tıklayınız
Edit: Biraz kafa yorunca hallettim.





< Bu mesaj bu kişi tarafından değiştirildi luck runs out -- 9 Mayıs 2018; 1:58:23 >

C
7 yıl
Yüzbaşı

Link public değil. İzinleri düzeltirsen bakabiliriz.



< Bu ileti mini sürüm kullanılarak atıldı >

L
7 yıl
Binbaşı
Konu Sahibi

@CarnageTR
O dosyadaki sorunu halletmiştim ama yine de şimdi public olarak ayarladım.



C
7 yıl
Yüzbaşı

öncelikle belirtmeliyim ki yazdığın kod python mantığına oldukça ters. Kodu fonksiyon ve classlar ile düzenlersen hem daha okunaklı hem de daha işlevli olur.

Problemin kaynağı "agirlikistensin" listesinin yapısından kaynaklanıyor. Elindeki kodu aşağıdaki gibi düzenlersen sorunun kaynağını görebilirsin.



#-*- coding:utf-8 -*- 
#Matris oluşturma.
u=-1
satir = 0
sutun = 0
matris =[]
matrisinkaresi =[]
kokici= []
x=[]
agirlikistensin=[]
agirliklartoplam=0
agirlik=[]
wmat=[]
satir = int(input("Karar değişkeni sayısı:"))
sutun = int(input("Değerlendirme faktörü sayısı:"))

for i in range(satir): # Kullanıcının istediği boyutta matris oluşturuyor.Diğer matrisler ileriki adımlar içindir.
matris += [[0] *sutun]
matrisinkaresi += [[0] * sutun]
kokici+=[[0]*sutun] ###
x+=[[0]*sutun]
agirlikistensin+=[[0]*sutun]
agirlik+=[[0]*sutun]
wmat+=[[0]*sutun]


for i in range(satir): #Kullanıcıdan matrise değer atanıyor.
for j in range(sutun):
sayi = float(input("{}. satir {}. sütun elemanını giriniz:" .format(i+1,j+1)))
matris[i][j] = sayi
matrisinkaresi[i][j] = sayi**2
sayac1=sutun-1

for i in range(sutun):
print('sütun: ', i)
print('agirlikistendsin: ', agirlikistensin)
for j in range(sutun):
print('index: ', j)
print('agirlikistensin j: ', agirlikistensin[j])
print('agirliktoplam: ', agirliklartoplam)
agirlikistensin[j]= float(input("{}. değerlendirme faktörünün ağırlığını giriniz:".format(j+1)))
agirliklartoplam+=agirlikistensin[j]
print('agirlikistendsin: ', agirlikistensin)
print('--------')

for j in range(sutun):
print(j)
agirlik[j]=agirlikistensin[j]/agirliklartoplam




for i in range(satir): #Kullanıcıdan matrise değer atanıyor.
for j in range(sutun):
print(matrisinkaresi[i][j])
m=i
k=i
u=i
for j in range (sutun):
while m>=0:
kokici[i][j] += matrisinkaresi[m][j]
m=m-1
if m==-1:
m=k

for j in range (sutun):
while True:
kokici[u][j]=kokici[i][j]
u=u-1
if u==-1:
u=i
break
for i in range (satir):
for j in range (sutun):
x[i][j]=(matris[i][j])/((kokici[i][j])**0.5)

for i in range (satir):
for j in range (sutun):
wmat[i][j]=x[i][j]*agirlik[j]

for i in range (satir):
for j in range (sutun):
print("{}.satir {}.sütundaki kök içi".format(i+1,j+1), kokici[i][j])

for i in range (satir):
for j in range (sutun):
print("{}.satir {}.sütundaki x matrisi değeri".format(i+1,j+1), x[i][j])

for i in range (satir):
for j in range (sutun):
print("Ağırlıklandırılmış matrisimizin {}.satır {}.sütun değeri:".format(i+1,j+1),wmat[i][j])



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.