python中单个print()函数的结果是什么



我得到了一个python子列表和一个函数(用.替换0(来打印这个子列表(是的,这就像数独(。代码如下。

grid = [[5,3,0,0,7,0,0,0,0], 
[6,0,0,1,9,5,0,0,0], 
[0,9,8,0,0,0,0,6,0], 
[8,0,0,0,6,0,0,0,3], 
[4,0,0,8,0,3,0,0,1], 
[7,0,0,0,2,0,0,0,6], 
[0,6,0,0,0,0,2,8,0], 
[0,0,0,4,1,9,0,0,5], 
[0,0,0,0,8,0,0,7,9]]

def print_grid():
for row in grid:
for column in row:
if column == 0:
print("." , end=" ")
else:
print(column , end=" ")

运行print_grid((后,得到如下结果。我想知道如何逐行打印。提前感谢您的任何帮助。

3 . . 7 . . . . 6 . . 1 9 5 . . . . 9 8 . . . . 6 . 8 . . . 6 . . . 3 4 . . 8 . 3 . . 1 7 . . . 2 . . . 6 . 6 . . . . 2 8 . . . . 4 1 9 . . 5 . . . . 8 . . 7 9

在循环的第二个末尾添加一个print()

grid = [[5,3,0,0,7,0,0,0,0], 
[6,0,0,1,9,5,0,0,0], 
[0,9,8,0,0,0,0,6,0], 
[8,0,0,0,6,0,0,0,3], 
[4,0,0,8,0,3,0,0,1], 
[7,0,0,0,2,0,0,0,6], 
[0,6,0,0,0,0,2,8,0], 
[0,0,0,4,1,9,0,0,5], 
[0,0,0,0,8,0,0,7,9]]

def print_grid():
for row in grid:
for column in row:
if column == 0:
print("." , end=" ")
else:
print(column , end=" ")
print()
print_grid()

这以一种更简单的方式实现了您想要的结果,打印网格的每一行"逐行";。对于每一行,我们使用列表理解来生成行值的新列表,其中0被替换为""然后使用splat运算符(*(,我们将此行作为参数传递,print语句将在这些参数之间使用空格进行打印。

grid = [[5,3,0,0,7,0,0,0,0], 
[6,0,0,1,9,5,0,0,0], 
[0,9,8,0,0,0,0,6,0], 
[8,0,0,0,6,0,0,0,3], 
[4,0,0,8,0,3,0,0,1], 
[7,0,0,0,2,0,0,0,6], 
[0,6,0,0,0,0,2,8,0], 
[0,0,0,4,1,9,0,0,5], 
[0,0,0,0,8,0,0,7,9]]
for row in grid:
print(*["." if val == 0 else val for val in row])  

模块Numpy非常适合此功能。但也要求您的打印功能变成一个板修改功能。

grid = [[5,3,0,0,7,0,0,0,0], 
[6,0,0,1,9,5,0,0,0], 
[0,9,8,0,0,0,0,6,0], 
[8,0,0,0,6,0,0,0,3], 
[4,0,0,8,0,3,0,0,1], 
[7,0,0,0,2,0,0,0,6], 
[0,6,0,0,0,0,2,8,0], 
[0,0,0,4,1,9,0,0,5], 
[0,0,0,0,8,0,0,7,9]]

def change_grid():
for x in range(9):
for y in range(9):
if grid[x][y] == 0:
grid[x][y] = "." 
change_grid()
print(np.matrix(grid))

您所需要做的就是每次循环一行时更改一行。

def print_grid():
for row in grid:
print("")
for column in row:
if column == 0:
print("." , end=" ")
else:
print(column , end=" ")

最新更新