逗号代码
假定有下面这样的列表:
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来跳过继续取下一个值