``基于python3,题目见教材
这是最开始的思路👇,但是输出结果总时多出一行
def common(grid):
for y in range(len(grid[0])):
for x in range(len(grid)-1):
print(grid[x][y],end='')
print(grid[-1][y])
print(grid[x][y])
grid=[['.','.','.','.','.','.'],
['.','o','o','.','.','.'],
['o','o','o','o','.','.'],
['o','o','o','o','o','.'],
['.','o','o','o','o','o'],
['o','o','o','o','o','.'],
['o','o','o','o','.','.'],
['.','o','o','.','.','.'],
['.','.','.','.','.','.']]
common(grid)
输出:
..oo.oo..
.ooooooo.
.ooooooo.
..ooooo..
...ooo...
....o....
. #这里总是多出一行
最开始的错误,在于忽略了for 函数的特性,认为x=8,y=0时不会自动换行,因此出现错误。
实际情况:
第一次展开:y=0:x分别为0,1,2,3,4,5,6,7,8,这里面由于end=‘’的存在,一直不会换行,直到x=8,第一轮y=0结束
y=0结束后,下面👇for关于x的函数已经结束,进入下一轮y函数(即y=1),如此循环。
for x in range(len(grid)-1):
print(grid[x][y],end='')
修正后如下:
def common(grid):
for y in range(len(grid[0])):
for x in range(len(grid)):
print(grid[x][y],end='')
print(grid[x][y])
grid=[['.','.','.','.','.','.'],
['.','o','o','.','.','.'],
['o','o','o','o','.','.'],
['o','o','o','o','o','.'],
['.','o','o','o','o','o'],
['o','o','o','o','o','.'],
['o','o','o','o','.','.'],
['.','o','o','.','.','.'],
['.','.','.','.','.','.']]
common(grid)
输出结果如下:
..oo.oo...
.ooooooo..
.ooooooo..
..ooooo...
...ooo....
....o.....
至于第一次错误的输出里,知道编程思路错在哪了,但还是不清楚为啥会多输出一行,还在研究中,欢迎各位大佬指点。