P79 4.10.2 字符图网格
原题给的列表中的列表的表项数目都一样为6,考虑到如果不一样,以len(grid[0])作为col值就有可能报错,于是建了一个col_list[]来收集表项数目,循环到out of range的表项时print * 代替。
grid = [['.', '.', '.', '.', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['0', '0', '0', '0', '.', '.'],
['0', '0', '0', '0', '0', '.'],
['.', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '.'],
['0', '0', '0', '0', '.', '.'],
['.', '0', '0', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
row=len(grid)
col_list=[]
for i in range(row):
col=len(grid[i])
col_list.append(col)
col_max=max(col_list)
for y in range(col_max):
for x in range(row):
if x!=row-1:
if y<col_list[x]:
print(grid[x][y],end='')
else:
print('*',end='')
else:
if y<col_list[x]:
print(grid[x][y],end='\n')
else:
print('*',end='\n')
表项数目一致时输出的与原题一样
如果最后一个列表表项为5个时
即
grid = [[’.’, ‘.’, ‘.’, ‘.’, ‘.’, ‘.’],
[’.’, ‘0’, ‘0’, ‘.’, ‘.’, ‘.’],
[‘0’, ‘0’, ‘0’, ‘0’, ‘.’, ‘.’],
[‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘.’],
[’.’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’],
[‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘.’],
[‘0’, ‘0’, ‘0’, ‘0’, ‘.’, ‘.’],
[’.’, ‘0’, ‘0’, ‘.’, ‘.’, ‘.’],
[’.’, ‘.’, ‘.’, ‘.’, ‘.’]]
此时输出的结果为
..00.00..
.0000000.
.0000000.
..00000..
...000...
....0...*