Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions absp-chapter-4/4.1-10.py
Original file line number Diff line number Diff line change
@@ -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来复制。

19 changes: 19 additions & 0 deletions absp-chapter-4/4.P1.py
Original file line number Diff line number Diff line change
@@ -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)
44 changes: 44 additions & 0 deletions absp-chapter-4/4.P2.py
Original file line number Diff line number Diff line change
@@ -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)