Herkese merhaba… pythonda 3x3 matriks yaparken…
print("*"*30,"criteria calculator","*"*30)
print("_"*60)
print("enter your matrix:","(for this program you can only enter 3x3 matrix)")
matrix=[[],[]]
for row in range(3):
for column in range(3):
matrix[[row],[column]]=[float(input("{} row,{} column:". format((row+1),(column+1))))]
bu kodu çalıştırdığımda şöyle bi hata ile karşılaşdım…
Traceback (most recent call last):
File "C:/Users/vaqif/Desktop/systemli analiz lab.py", line 11, in <module>
matrix[[row],[column]]=[float(input("{} row,{} column:". format((row+1),(column+1))))]
TypeError: list indices must be integers or slices, not tuple
bi yardım ede bilirmisiniz?
Merhaba, yazdığınız kodların biraz düzeltilmesi gerekiyor, aşağıdaki kodları bir inceleyin isterseniz.
#!/usr/bin/env/python3
# -*- coding: utf-8 -*-
matris = [[float(input("r{}c{} = ".format(row + 1, column + 1))) for column in range(3)] for row in range(3)]
print(matris)
Yukarıdaki liste üretecinin yaptığı işlem aşağıdaki kodların yaptığı işlemin birebir aynısıdır.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
d1 = []
for row in range(3):
d2 = []
for column in range(3):
d2.append(float(input("r{}c{} = ".format(row + 1, column + 1))))
d1.append(d2)
print(d1)
Rica ederim. append() metodu bir listeye eleman eklemeye yarar. Sizin yazdığınız yazım (yani matris[row],[column] = …) ancak listede o indekste eleman varsa kullanılabilir (Bir de arada virgül kullanmamak gerekiyor.). Aşağıdaki kodlara bir bakın isterseniz.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Aşağıdaki matris bir tuple() nesnesidir.
matris = [[], [], []], [[], [], []], [[], [], []]
print(type(matris))
# Aşağıdaki matris de bir list() nesnesidir.
# matris = [[[], [], []], [[], [], []], [[], [], []]]
for row in range(3):
for column in range(3):
matris[row][column] = float(input("r{}c{} = ".format(row + 1, column + 1)))
# Ayrıca yukarıda gördüğünüz gibi,
# matris[[row],[column]] yerine matris[row][column]
# yazmak gerekiyor.
# Ekrana bastırılacak veriyi bir liste nesnesine dönüştürelim.
print(list(matris))
# Veya tuple() olan matrisi değil de list() olan matrisi list() veri tipinde
# ekrana bastırmak istersek, o zaman şöyle yazmamız yeterli olur:
# print(matris)
Gördüğünüz gibi, önce matrisin elemanlarının oluşturulmuş olması lazım ki belli bir indeksteki değer for döngüleri içinde değişikliğe uğratılabilsin yoksa program bir IndexError hatası yükseltir.
Rica ederim.
Evet Numpy’yi pip ile indirmek gerekiyor. Dediğiniz gibi Numpy, çok boyutlu diziler oluşturmak için tasarlanmış, dizi oluşturmayı neredeyse C hızında yapan çok kullanışlı bir modüldür.