逗号代码
假定有下面这样的列表:
spam=['apples','bananas','tofu',' cats']
编写一个函数,它以一个列表值作为参数,返回一个字符串。该字符串包含所有表项,表项之间以逗号和空格分隔,并在最后一个表项之前插入 and 。例如,将前面的spam列表传递给函数,将返回'apples,bananas,tofu,and cats'。但是你的函数应该能够传递给它的任何列表。

someList = []

def a(someList):
    for i in range(0, len(someList)):
        if i != len(someList)-1:
            print(someList[i], end=',')
        else:
            print('and ' + someList[len(someList)-1])

spam = ['apple', 'banana', 'tofu', 'cats']
a(spam)

 

字符图网格
假定有一个列表的列表,内层列表的每个值都是包含一个字符的字符串,像这样:

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', '.', '.','.'],
         ['.', '.', '.', '.', '.','.']]
你可以认为grid[x][y]是一幅“图”在x,y坐标处的字符,该图由文本字符组成。原点(0,0)在左上角,向右x坐标增加,向下y坐标增加。

复制前面的网格值,编写代码用它打印图像。

 

..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....

提示:你需要使用循环嵌套循环,打印出grid[0][0],然后grid[1][0],然后grid[2][1],以此类推,知道grid[8][0]。这就完成第一行,所以接下来打印换行。然后程序将打印出grid[0][1],然后grid[1][1],然后grid[2][1],以此类推。程序最后将打印出grid[8][5]。
而且,如果你不希望在每次print()调用后都自动打印换行,记得向print()传递end关键字参数。

import copy

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', '.', '.', '.'],
        ['.', '.', '.', '.', '.', '.']]
gridNew = copy.deepcopy(grid)
for j in range(0, 6):
    for i in range(0, 9):
        if i < 8:
            print(gridNew[i][j], end="")
        else:
            print(gridNew[i][j])

 

==============

1. 思考了一下,如果不写死数值,写成根据grid的长度、grid内每个列表的长度来定义range

2. 以及,若grid内的列表不是规则的同长度,打印就会报错,于是

 

import copy

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', '.', '.', '.'],
        ['.', '.', '.', '.', '.', '.']]
gridNew = copy.deepcopy(grid)
lens = []
for spa in gridNew:
    lens.append(len(spa))

for j in range(0, max(lens)):
    for i in range(0, len(gridNew)):
        try:
            if i < len(gridNew)-1:
                print(gridNew[i][j], end="")
            else:
                print(gridNew[i][j])
        except:
            continue

 

3. i的取值与grid内列表数量一致,可以用len(gridNew)来自动适配列表

4. j的取值就有点复杂,首先要确定grid列表内每个列表的长度

其次将每个列表长度放入一个空列表内

再求出列表长度最大的数值

5. 在取值过程中,可能存在i或j娶不到的情况,此时会报错,用except:continue来跳过继续取下一个值

 

posted on 2021-08-09 00:20  讲道理好嘛  阅读(84)  评论(0编辑  收藏  举报