Нужно создать цикл ввода, который будет спрашивать пользователя, хотят ли они переместить элемент с именем «K» вверх по столбцам, пока они не попытаются перейти в индекс, выходящий за пределы диапазона, однако, когда я ввожу «N», «K» "элемент исчезает и не перемещается вверх по столбцам, как предполагалось.

table = [
    ["-", "-", "-"],
    ["-", "-", "-"],
    ["-", "-", "-"]
]

tableQuit = ''
krow = -1
kcol = 0
k = "K"

for i in range(len(table[0])):
    for j in range(len(table)):
        table[krow][kcol] = k
while tableQuit != "Q":
    for i in table:
        while True:
            tableQuit = input("Do you want to go north")
            if tableQuit == "N" or tableQuit == "Q":
                break
            else:
                print("\nInvalid input.")
                print(table)
        if tableQuit == 'N':
            table[krow][kcol] = table[krow + 1][kcol]
            print(table)
        if tableQuit == 'Q':
            print("\nGood bye!")
            break
0
WahWahBaby 20 Апр 2020 в 19:39

2 ответа

Лучший ответ

Вам нужен только один while цикл для игрового цикла:

table = [
    ["-", "-", "-"],
    ["-", "-", "-"],
    ["-", "-", "-"]
]

def print_map(grid): # Just for convenience
    for i in grid:
        print(i)

k = "K"
krow, kcol = 2, 0
table[krow][kcol] = k     
tableQuit = ''   
while tableQuit != "Q":
    print_map(table)
    tableQuit = input("Press N to go north. Press Q to quit: ")
    if tableQuit == 'N':
        table[krow][kcol] = '-' 
        krow = (krow - 1) % len(table)
        table[krow][kcol] = 'K'

print("\nGood bye!")
1
GrandPhuba 20 Апр 2020 в 16:58

Пока ответ GrandPhuba это путь. Я пытался заставить ваш код работать с минимальным количеством правок. Смотрите комментарии к коду для изменений:

table = [
    ["-", "-", "-"],
    ["-", "-", "-"],
    ["-", "-", "-"]
]

tableQuit = ''
# set the right row number
krow = 2
kcol = 0
k = "K"

for i in range(len(table[0])):
    for j in range(len(table)):
        table[krow][kcol] = k

print(table)
while tableQuit != "Q":
    for i in table:
        while True:
            tableQuit = input("Do you want to go north")
            if tableQuit == "N" or tableQuit == "Q":
                break
            else:
                print("\nInvalid input.")
                print(table)
        if tableQuit == 'N':
            # set old row/kol to -
            table[krow][kcol] = '-'
            # update k row
            if krow > 0:
                krow -=1
            else:
                krow = 2
            # set new row/k to K
            table[krow][kcol] = 'K'
            print(table)
        if tableQuit == 'Q':
            print("\nGood bye!")
            break
0
Thaer A 20 Апр 2020 в 17:03