diff --git a/absp-chapter-4/4.1-10.py b/absp-chapter-4/4.1-10.py new file mode 100644 index 0000000..947dff4 --- /dev/null +++ b/absp-chapter-4/4.1-10.py @@ -0,0 +1,59 @@ +# -*-coding:utf-8-*- +# 第4章 列表 +# 1. 什么是[]? +# '['代表列表的开始,']'代表列表的结束 + +# 2. 如何将'hello'赋给列表的第三个值,而列表保存在名为 spam 的变量中?(假 +# 定变量包含[2, 4, 6, 8, 10])。 +# spam = [2, 4, 6, 8, 10] +# spam[2] = 'hello' + +# 对接下来的 3 个问题,假定 spam 包含列表['a', 'b', 'c', 'd']。 +# 3. spam[int('3' * 2) / 11]求值为多少? +# 'd' +# 4.spam[-1]求值为多少? +# 'd' +# 5.spam[:2]求值为多少? +# ['a', 'b', 'c'] + +# 对接下来的 3 个问题。假定 bacon 包含列表[3.14, 'cat', 11, 'cat', True]。 +# 6.bacon.index('cat')求值为多少? +# 1 +# 7.bacon.append(99)让 bacon 中的列表值变成什么样? +# [3.14, 'cat', 11, 'cat', True, 99] +# 8.bacon.remove('cat')让 bacon 中的列表时变成什么样? +# [3.14, 11, 'cat', True] + +# 9.列表连接和复制的操作符是什么? +# 列表连接操作符'+';列表复制操作符'*' + +# 10.append()和 insert()列表方法之间的区别是什么? +# append()方法,是将参数添加到列表的末尾, 即最后一个表项 +# insert()方法,是将参数插入到列表中指定的位置,如spam.insert(1, 'a') +# 便是在spam列表中1位置插入'a' + +# 11.从列表中删除值有哪两种方法? +# 如果知道需要删除表项的位置,可以使用del[]. +# del[0]即删除列表中第一个表项 +# 如果知道需要删除的表项,可以使用remove(). +# spam.remove('a'),即删除列表spam中'a'表项. + +# 12.请说出列表值和字符串的几点相似之处。 +# 都可以使用下标和切片来取值,使用for循环,使用len()方法 +# 使用in, not in 操作符 + +# 13.列表和元组之间的区别是什么? +# 元组输入时使用'()';列表使用'[]' +# 元组像字符串一样,是不可变的。元组不能让它们的值被修改、添加或删除 +# 14.如果元组中只有一个整数值 42,如何输入该元组? +# (42,) +# 15.如何从列表值得到元组形式?如何从元组值得到列表形式? +# 从列表值得到元组:tuple(list()) +# 从元组值得到列表:list(tuple()) + +# 16.“包含” 列表的变量,实际上并未真地直接包含列表。它们包含的是什么? +# 它们包含的是列表的'引用',列表的引用指向列表的值。 +# 17.copy.copy()和 copy.deepcopy()之间的区别是什么? +# copy.copy()可以用来复制列表或字典这样的可变值。 +# 而如果需要复制的列表中,还包含内部列表,则使用copy.deepcopy来复制。 + diff --git a/absp-chapter-4/4.P1.py b/absp-chapter-4/4.P1.py new file mode 100644 index 0000000..3cec861 --- /dev/null +++ b/absp-chapter-4/4.P1.py @@ -0,0 +1,19 @@ +#-*-coding:utf-8-*- +# 假定有下面这样的列表: +# spam = ['apples', 'bananas', 'tofu', 'cats'] +# 编写一个函数,它以一个列表值作为参数,返回一个字符串。该字符串包含所 +# 有表项,表项之间以逗号和空格分隔,并在最后一个表项之前插入 and。例如,将 +# 前面的 spam 列表传递给函数,将返回'apples, bananas, tofu, and cats'。但你的函数应 +# 该能够处理传递给它的任何列表。 + +def liststr (spam): + spam[-1] = 'and ' + str(spam[-1]) + spamA = '' + for i in range(len(spam)): + spamA = spamA + str(spam[i]) + ',' + print (spamA[:-1]) + + +spam = ['cat', 'dog', 'moose'] + +liststr(spam) \ No newline at end of file diff --git a/absp-chapter-4/4.P2.py b/absp-chapter-4/4.P2.py new file mode 100644 index 0000000..acbe1d7 --- /dev/null +++ b/absp-chapter-4/4.P2.py @@ -0,0 +1,44 @@ +#-*-coding:utf-8-*- +#字符图网格 +#假定有一个列表的列表, 内层列表的每个值都是包含一个字符的字符串, 像这样: +#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', '.', '.', '.'], +#['.', '.', '.', '.', '.', '.']] +#你可以认为 grid[x][y]是一幅“图” 在 x、 y 坐标处的字符, 该图由文本字符组 +#成。 原点(0, 0)在左上角, 向右 x 坐标增加, 向下 y 坐标增加。 +#复制前面的网格值, 编写代码用它打印出图像。 +#..OO.OO.. +#.OOOOOOO. +#.OOOOOOO. +#..OOOOO.. +#...OOO... +#....O.... +#提示 +#你需要使用循环嵌套循环,打印出 grid[0][0],然后 grid[1][0],然后 grid[2][0],以此 +#类推,直到 grid[8][0]。这就完成第一行,所以接下来打印换行。然后程序将打印出 +#grid[0][1],然后 grid[1][1],然后 grid[2][1],以此类推。程序最后将打印出 grid[8][5]。 +#而且, 如果你不希望在每次 print()调用后都自动打印换行, 记得向 print()传递 +#end 关键字参数。 + +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 printlist(list): + for i in range(len(list[0])): + for k in range(len(list)): + print (list[k][i], end = '') + print ('') +printlist(grid) \ No newline at end of file