Не могу преобразовать строку в список целых чисел

Я пытаюсь создать программу на python, которая определяет, является ли квадрат магическим квадратом или нет, и у меня возникают проблемы с вводом пользовательского ввода в список. Я понимаю, что мой код может быть более эффективным, но я очень плохо знаком с Python.

column_1 = (0,3)
column_2 = (0,3)
column_3 = (0,3)
column_4 = (0,3)

row_1 = [int(i) for i in input('input row 1 with spaces inbetween numbers: ').split(' ')]
row_2 = [int(i) for i in input('input row 2 with spaces inbetween numbers: ').split(' ')]
row_3 = [int(i) for i in input('input row 3 with spaces inbetween numbers: ').split(' ')]
row_4 = [int(i) for i in input('input row 4 with spaces inbetween numbers: ').split(' ')]

column_1[0].append(row_1[0])
column_1[1].append(row_2[0])
column_1[2].append(row_3[0])
column_1[3].append(row_4[0])

column_2[0] = row_1[1]
column_2[1] = row_2[1]
column_2[2] = row_3[1]
column_2[3] = row_4[1]

column_3[0] = row_1[2]
column_3[1] = row_2[2]
column_3[2] = row_3[2]
column_3[3] = row_4[2]

column_4[0] = row_1[3]
column_4[1] = row_2[3]
column_4[2] = row_3[3]
column_4[3] = row_4[3]

diagonal_left_to_right[0] = column_1[0]
diagonal_left_to_right[1] = column_2[1]
diagonal_left_to_right[2] = column_3[2]
diagonal_left_to_right[3] = column_4[3]

diagonal_right_to_left[0] = column_4[0]
diagonal_right_to_left[1] = column_3[1]
diagonal_right_to_left[2] = column_2[2]
diagonal_right_to_left[3] = column_1[3]

sum_row_1 = sum(row_1)
sum_row_2 = sum(row_2)
sum_row_3 = sum(row_3)
sum_row_4 = sum(row_4)

sum_col_1 = sum(column_1)
sum_col_2 = sum(column_2)
sum_col_3 = sum(column_3)
sum_col_4 = sum(column_4)

sum_dag_l2r = sum(diagonal_left_to_right)
sum_dag_r2l = sum(diagonal_right_to_left)

if sum_row_1 == sum_row_2 == sum_row_3 == sum_row_4 == sum_col_1 == sum_col_2 == sum_col_3 == sum_col_4 == sum_dag_r2l == sum_dag_l2r:
    print('magic')

else:
    print('not magic')

Я продолжаю получать сообщения об ошибках, что у объекта 'int' нет атрибута 'append'. Я пробовал много разных методов, которые я нашел на этом сайте, и ни один из них не работал по разным причинам. Я открыт для всех предложений, все поможет мне. Спасибо

1 ответ

Вы сначала определяете column_1 как кортеж (с 2 целочисленными значениями, одно с индексом 0 и одно с индексом 1). append метод не может работать на column_1[0]что, как делать 0.append(), Вы, вероятно, не намеревались создать кортеж, а список с определенными размерами.

Вы можете назначить значения столбцам и диагоналям с помощью этой записи списка:

column_1 = [row_1[0], row_2[0], row_3[0], row_4[0]]
column_2 = [row_1[1], row_2[1], row_3[1], row_4[1]]
column_3 = [row_1[2], row_2[2], row_3[2], row_4[2]]
column_4 = [row_1[3], row_2[3], row_3[3], row_4[3]]
diagonal_left_to_right = [column_1[0],column_2[1],column_3[2],column_4[3]]
diagonal_right_to_left = [column_4[0],column_3[1],column_2[2], column_1[3]]
Другие вопросы по тегам