python - 如何使用给定列表的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}")
解决方案
在您的第二个中,您在进入下一行之前打印了 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}")
推荐阅读
- selenium - 如何根据兄弟输入的@id 选择跨度
- javascript - 使用日期时间选择器将日期格式化为 DD-MM-YYYY
- c# - ASP.NET Core 中的 ILogger 和 DependencyInjection 架构
- widget - PWA 是否支持小部件
- c++ - qt qml 对象已经有一个 QQmlContext
- python - 熊猫的功能不正常
- visual-studio-code - 将 VS Code 默认设置为折叠
- r - 双重标记 x 轴
- java - 无法在 Android Studio 中加载任何调用本机代码的串行库
- python - 如何删除 csv 文件中的特殊字符并使用 python 保持变音符号