首页 > 解决方案 > 如何使用给定列表的for循环在Python中反转索引值

问题描述

我想创建一个函数,该函数打印出带有给定列表的井字棋盘,该列表将其索引值以相反的顺序放置在棋盘上,就像在从 9 到 1 的数字键盘上一样,第一行具有索引值 7、8、9:第 2 行 4、5、6:第 3 行 1、2、3。

例如:给定的列表

test_board = ['O','O','X','X','X','O','X','O','X']

该节目打印如下:

 X | O | X 
---|---|---
 X | X | O 
---|---|---
 O | O | X  

我写了这个函数:

def display_board(board):

    h_sep = '-' * 3
    for i in range(3):

        for j in reversed(board[1:]):

            print(f"{j:^3}|{j:^3}|{j:^3}")

        if i != 2:
            print(f"{h_sep:^3}|{h_sep:^3}|{h_sep:^3}")

但是当我用给定的列表调用函数时,我得到了这个打印:

test_board = ['O','O','X','X','X','O','X','O','X']
display_board(test_board)

输出:

 X | X | X 
 O | O | O 
 X | X | X 
 O | O | O 
 X | X | X 
 X | X | X 
 X | X | X 
 O | O | O 
---|---|---
 X | X | X 
 O | O | O 
 X | X | X 
 O | O | O 
 X | X | X 
 X | X | X 
 X | X | X 
 O | O | O 
---|---|---
 X | X | X 
 O | O | O 
 X | X | X 
 O | O | O 
 X | X | X 
 X | X | X 
 X | X | X 
 O | O | O 

编辑:我可以用它for loop来实现这一点,而无需像这样编写多个打印语句:

print(f"{board[6]:^3}|{board[7]:^3}|{board[8]:^3}")
print(f"{h_sep:^3}|{h_sep:^3}|{h_sep:^3}")
print(f"{board[3]:^3}|{board[4]:^3}|{board[5]:^3}")
print(f"{h_sep:^3}|{h_sep:^3}|{h_sep:^3}")
print(f"{board[0]:^3}|{board[1]:^3}|{board[2]:^3}")

标签: pythonloops

解决方案


在您的第二个中,您在进入下一行之前打印了 3 次。

具有以下修改的功能将适用于您的问题:

def display_board(board):
h_sep = '-' * 3
for i in reversed(range(3)):

    print(f"{board[i*3]:^3}|{board[i*3+1]:^3}|{board[i*3+2]:^3}")

    if i != 0:
        print(f"{h_sep:^3}|{h_sep:^3}|{h_sep:^3}")

推荐阅读