Python:制作一个项目

时间:2018-01-29 11:48:37

标签: python

你好,我是python的新手,我开始从一本名为“自动化无聊的东西”的书中学习,其中有一个名为Character Picture Grid的项目,我做了但我认为我的代码有点愚蠢,任何人都告诉我是做这个项目的正确方法吗? :D谢谢你^^

代码:

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

def x_y_1(grid):
for y in range(9):
    for x in [0]:
        print(grid[y][x],end='')
print(end='\n')
def x_y_2(grid):
for y in range(9):
    for x in [1]:
        print(grid[y][x],end='')
print(end='\n')
def x_y_3(grid):
for y in range(9):
    for x in [2]:
        print(grid[y][x],end='')
print(end='\n')
def x_y_4(grid):
for y in range(9):
    for x in [3]:
        print(grid[y][x],end='')
print(end='\n')
def x_y_5(grid):
for y in range(9):
    for x in [4]:
        print(grid[y][x],end='')
print(end='\n')
def x_y_6(grid):
for y in range(9):
    for x in [5]:
        print(grid[y][x],end='')
print(end='\n')
x_y_1(grid)
x_y_2(grid)
x_y_3(grid)
x_y_4(grid)
x_y_5(grid)
x_y_6(grid)

5 个答案:

答案 0 :(得分:1)

我在想你正在寻找按元素打印数组元素。

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

# You can create one generic function instead
def x_y(grid, index):
    for y in range(6):      
        print(grid[index][y],end='')
    print(end='\n')

for index_ in range(len(grid)):
    x_y(grid, index_)

答案 1 :(得分:1)

我也正在读这本书,我认为你想要的答案应该如下。

def x_y(grid, index):
    for y in range(9):      
        print(grid[y][index],end='')
    print(end='\n')

for index_ in range(6):
    x_y(grid, index_)

答案 2 :(得分:0)

尝试:

def rev():
x = 0
y = 0
while y < 6:
    print(grid[x][y], end = '')
    x += 1
    if x == 8:
        print(grid[x][y])
        x = 0
        y += 1

答案 3 :(得分:0)

与循环有关。这样,您不必一遍又一遍地重复步骤。 for循环为您完成了此任务。

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 y in range(len(grid[0])):
 for x in range(len(grid)):
     print(grid[x][y], end='') 
 print()

答案 4 :(得分:0)

我的函数从y变量的for循环开始,然后继续到x- for循环,该循环使用“ end =”“参数将它们打印,以将网格的x坐标连接在一起。在x-for循环之外,我使用print('')来换行。 y-for循环总共向下迭代6次以完成图片。


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

def characterPictureGrid(grid):
    
    for y in range(6):  #also could have used range(len(grid[0]))

        for x in range(len(grid)):
            print(grid[x][y], end='')   #prints the x coordinates together
        print('')                       #automatically starts new line
     
characterPictureGrid(grid)