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