Здесь есть несколько проблем, но главная проблема - это порядок, в котором вы присваиваете значение и проверяете значение вашей переменной test
.
Вот реализация с некоторой обработкой ошибок, которая будет добиться того, что вы пытаетесь сделать:
row_4 = [0,0,0,0]
row_3 = [0,0,0,0]
row_2 = [0,0,0,0]
row_1 = [0,0,0,0]
def printer():
print(row_1)
print(row_2)
print(row_3)
print(row_4)
while True:
# get, parse user input:
column_number = int(input('Enter column number (-1 to exit): '))
# exit on -1:
if column_number == -1: break
# ask user to try again if index is out of bounds:
if column_number <= -2 or column_number >= 4:
print('Invalid number, please try again.')
continue
# check if the given column has already been updated in row_4:
if row_4[column_number] == 1:
print('Already updated, please try again.')
continue
# if everything else is okay, update row_4 and call printer():
row_4[column_number] = 1
printer()