Казалось бы - все элементарно.
я создаю массив нулей, потом обхожу его, сравниваю индексы, перезаписываю значения
Но внезапно возникает непонятка которая зависит от способа генерации начального массива
если массив создается так:
a = [[0 for f in range(n)] for k in range(n)]
a = [[0]*n]*n
то в дальнейшем начинается какая-то ерунда
более подробно:
n = int(input('введите n:')) # a = [[0 for f in range(n)] for k in range(n)] # если создавать массив так - то все нормально a = [[0]*n]*n for k in range(n): print(a[k]) for i in range(n): for j in range(n): if i==j: a[i][j] = 1 print('i=',i,' j=',j, 'a=',a[i][j]) elif j>i: a[i][j] = 0 print('i=', i, ' j=', j, 'a=', a[i][j]) else: a[i][j] = 2 print('i=', i, ' j=', j, 'a=', a[i][j]) print('***') print('a[',i,']=',a[i]) # до этого момента все в порядке # а дальше начинается какая-то херня print('a[1][1]=',a[1][1]) # оппа!!!!!!!!! вывродит 2 хотя должно быть 1 print('a:') #print(a) for m in range(n): print('m:',m) print(a[m])