Python не сохраняются значения списка? - PullRequest
0 голосов
/ 07 февраля 2020
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:   
    place_counter = int(input('which column')) 
    test = row_4[place_counter]
    if test == 0:
        row_4.insert((place_counter) , 1)
        place_counter -= 1
        row_4.pop(place_counter)
        print(test)
        printer()

    if test !=0:
        print('not allowed')
        print(test)

когда вы запускаете этот код, вы можете записать в row_4 index 1, однако при повторном цикле, если вы попытаетесь снова записать в index 1, он должен выдать 'неразрешено' однако программа игнорирует это и, следовательно, записывает поверх row_4 index 1! почему это и как я могу это исправить?

1 Ответ

1 голос
/ 07 февраля 2020

Здесь есть несколько проблем, но главная проблема - это порядок, в котором вы присваиваете значение и проверяете значение вашей переменной 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...