@tillivensew

Мне нужно изменять каждый элемент массива согласно условию, я пытаюсь это сделать через цикл, но выдает ошибку. Что не так?

Вот задание:
6328818e17e1f214722363.png
где k, n - индексы элемента массива
K, N - строка, столбец
я создаю массив заполненный нулями, а далее хочу изменить каждый элемент через цикл

rows_N = int(input("Введите количество строк N (N>=1): "))
if rows_N >= 1:
column_K = int(input("Введите количество столбцов K (K>=3): "))
if column_K >= 3:
mas = [[0 for j in range(rows_N)] for i in range(column_K)]
k = 0
n = 0
while k <= column_K or n <= rows_N:
x = 1 / 2 * k * (n ** 2 + n) - n ** 2 + 2 * n
mas[n][k] = x
n += 1
k += 1
print(mas)
выдает ошибку:
in
mas[n][k] = x
IndexError: list assignment index out of range
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 2
sheerluck
@sheerluck
rows_N = int(input("Введите количество строк N (N>=1): ")) 
if rows_N >= 1:
    column_K = int(input("Введите количество столбцов K (K>=3): ")) 
    if column_K >= 3:
        mas = [[0 for j in range(column_K)] for i in range(rows_N)]
        k = 0 
        n = 0 
        for k in range(1, column_K + 1): 
            for n in range(1, rows_N + 1): 
                if k == 1:
                    x = 1 
                else:
                    x = int(1 / 2 * k * (n**2 - n) - n**2 + 2 * n)
                mas[n - 1][k - 1] = x 
for row in mas:
    print(", ".join([f"{x:>4}" for x in row]))


Введите количество строк N (N>=1): 15
Введите количество столбцов K (K>=3): 10
   1,    1,    1,    1,    1,    1,    1,    1,    1,    1   
   1,    2,    3,    4,    5,    6,    7,    8,    9,   10  
   1,    3,    6,    9,   12,   15,   18,   21,   24,   27  
   1,    4,   10,   16,   22,   28,   34,   40,   46,   52  
   1,    5,   15,   25,   35,   45,   55,   65,   75,   85  
   1,    6,   21,   36,   51,   66,   81,   96,  111,  126 
   1,    7,   28,   49,   70,   91,  112,  133,  154,  175 
   1,    8,   36,   64,   92,  120,  148,  176,  204,  232 
   1,    9,   45,   81,  117,  153,  189,  225,  261,  297 
   1,   10,   55,  100,  145,  190,  235,  280,  325,  370 
   1,   11,   66,  121,  176,  231,  286,  341,  396,  451 
   1,   12,   78,  144,  210,  276,  342,  408,  474,  540 
   1,   13,   91,  169,  247,  325,  403,  481,  559,  637 
   1,   14,  105,  196,  287,  378,  469,  560,  651,  742 
   1,   15,  120,  225,  330,  435,  540,  645,  750,  855
Ответ написан
Комментировать
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
1.Нумерация в структурах данных (списки, кортежи, сеты) начинается с нуля. Поэтому номер последнего элемента всегда на единицу меньше количества элементов. Собственно, условие меньше или равно не верно (c точки зрения языка).
while k <= column_K or n <= rows_N:
2.почему or? Оба значения изменяются одновременно, но при этом количество строк/столбцов не обязано быть одинаковым.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы