【发布时间】:2021-05-07 21:32:06
【问题描述】:
我正在终端中编程数独游戏,我想将网格打印到控制台,并在其周围有一个正方形,如下图所示。 我的代码没有问题,只是效率低。
我想让它更高效、更简短(使用列表推导、字符串乘法等)。 董事会是这样定义的, board = [[_ for _ in range(9)] for _ in range(9)]
这就是我正在使用的功能:
def Print_Board(board):
print("\n-------------------------")
for i in range(9):
for j in range(9):
if board[i][j] is not None:
if j == 0:
print("|", end=" ")
print(f"{board[i][j]} ", end="")
if (j + 1) % 3 == 0:
print("|", end=" ")
if (i + 1) % 3 == 0:
print("\n-------------------------", end=" ")
print()
【问题讨论】:
-
除非您要打印数千次,否则优化不会显着提高性能。
-
如果您实际使用它的值,请不要使用
_作为变量名。 -
我认为 sys.stdout 比普通打印要快,尽管差异不会很明显,除非你打印出非常大量的数独,我猜你不会。我同意尼特亚。
-
根据经验,尽量减少
print()s 的数量。理想情况下,构建游戏字段的完整字符串表示并立即打印。此外,由于您的实际数字会有所不同,因此所问的问题是无用的。你必须先考虑一下什么数据结构保存了游戏字段,然后再问如何打印。
标签: python python-3.x list-comprehension