#python #arrays #list #multidimensional-array
#python #массивы #Список #многомерный-массив
Вопрос:
Привет !
Я новичок в Python, и я написал скрипт для выполнения умножения матриц. Когда я тестирую матрицу с другим количеством строк и столбцов, я получаю ошибку IndexError
Ошибка IndexError: индекс назначения списка вне диапазона
Я обнаружил, что люди уже спрашивали об этой теме, и я просмотрел все комментарии и ответы, но я все еще не понимаю, в чем проблема в моем скрипте.
В моем скрипте я использую форматирование печати для печати входных данных в определенных местах. Я использовал константы H и L для размещения печати каждого элемента.
import os
os.system('cls' if os.name == 'nt' else 'clear')
H = 2 L = 6
A_nbColumns = 8
A_nbLines = 8
while A_nbColumns > 7:
A_nbColumns = int(input("Enter a column number for matrix A, max 7 ........ "))
while A_nbLines > 7:
A_nbLines = int(input("Enter a line number for matrix A, max 7 .......... "))
os.system('cls' if os.name == 'nt' else 'clear')
A = [[0 for x in range(A_nbColumns)] for y in range(A_nbLines)]
for y in range(len(A)):
for x in range(len(A[y])):
print(f"33[{(y * H 1 )};{ x * L 1 }H.")
for y in range(len(A)):
for x in range(len(A[y])):
A[x][y] = float(input(f"33[{(y * H 1 )};{ x * L 1 }H"))
Пожалуйста, кто-нибудь может мне помочь?
Заранее благодарю вас
С наилучшими пожеланиями
Матье
Комментарии:
1.
A[y][x]
вместоA[x][y]
? Т.е. переключите индексы.2. Большое вам спасибо @Timus.
3. Я даже не знаю, как классифицировать вопрос как решаемый 🙂
4. В ваших циклах for вы используете
y
для первого измерения иx
для второго измерения. Поэтому при индексации вы должны использовать тот же порядок, то есть использоватьA[y][x]
.5. Спасибо @darcamo, действительно, если массив имеет вид tab [i] [j], я буду представлять строки, следовательно, вертикальную ось, в то время как j будет представлять столбцы и горизонтальную ось. Я часто путаюсь, потому что сначала думаю в координатах, поэтому x для горизонтальной оси и y для вертикальной оси. Спасибо за вашу помощь.