列表和打印模式

时间:2016-03-29 12:48:49

标签: python list loops python-3.x

我目前正在学习Python 3,计划将它用于物理学和作为业余爱好。我正在使用使用Python自动化无聊的东西:初学者的实用编程由Al Sweigart。

我目前遇到了一个练习问题。

Screenshot of Problem

这是我到目前为止所做的。

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', '.', '.', '.'],
    ['.', '.', '.', '.', '.', '.']]

for x in grid : # x is a list value
    for y in x : #y is a string - a character in x
        if x.index(y) < len(x) - 1 :
            print(grid[grid.index(x)][x.index(y)], end = "")
        else :
            print(grid[grid.index(x)][x.index(y)])

然而,结果就是这样。

.......OO...OOOO..OOOOO.
.OOOOOOOOOO.
OOOO...OO.........

请指导我找到正确的解决方案。我在查看问题时遇到了一些麻烦。谢谢:))

2 个答案:

答案 0 :(得分:0)

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', '.', '.', '.'],
        ['.', '.', '.', '.', '.', '.']]

rot2 = zip(*grid[::-1])

for i in rot2: print i

# ('.', '.', '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', '.', '.', '.', '.')

答案 1 :(得分:0)

看看代码:

#!python3

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', '.', '.', '.'],
    ['.', '.', '.', '.', '.', '.']]

# The original. The empty-string separator
# is used to join the characters.
for row in grid:
    print(''.join(row))

print('------------------------------------')

# Using the zip() function to get the columns.
# The star in front of the grid expands the 
# outer list -- as if you passed the inner 
# lists as the separate arguments of the zip()
for column in zip(*grid):
    print(''.join(column))

print('------------------------------------')

# If you want to use indexing, then you need
# to get the dimensions first.
leny = len(grid)    # the number of rows
lenx = len(grid[0]) # the number of elements in the first rows

for x in range(lenx):
    for y in range(leny):
        print(grid[y][x], end='')
    print()

你得到......

......
.OO...
OOOO..
OOOOO.
.OOOOO
OOOOO.
OOOO..
.OO...
......
------------------------------------
..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....
------------------------------------
..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....