打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
《python编程快速上手 让繁琐工作自动化》第四章习题 实践答案

习题

1.什么是[]?
答:bu包含任何值的列表
2.如何将’hello’赋给列表的第三个值,而列表保存在名为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’]
对接下来的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()方法在列表任意下标处插入一个值。insert()方法的第一个参数是新值的下标,第二个参数是要插入的新值。
11.从列表中删除值有哪两种方法?
答:remove()移除已知的字符, del()移除知道位置不知字符的值
12.请说出列表值和字符串的几点相似之处。
答:列表和字符串都可以传入len(),都有下标和切片,用于for循环,连接或复制,并与in和not in操作符一起使用。
13.列表和元组之间的区别是什么?
答:列表是可变的,可以添加值、删除值和修改值,元组不可修改的;元组输入时用圆括号(),列表是用方括号[]
14.如果元组中只有一个整数值42,如何输入该元组?
答:spam=(42,),末尾的逗号是必须的,否则,Python 将认为,你只是在一个普通括号内输入了一个值
15.如何从列表值得到元组形式?如何从元组值得到列表形式?
答:list()和tuple()函数来转换类型
16.“包含”列表的变量,实际上并未真地直接包含列表。它们包含的是什么?
答:包含对列表值的引用
17.copy.copy()和copy.deepcopy()之间的区别是什么?
答:copy.copy()函数将浅拷贝列表,而copy.deepcopy()函数将深拷贝列表。也就是说,只有copy.deepcopy()会复制列表内的所有列表。

实践项目

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

def comma(test): string='' for index in range(len(test)): if index == len(test)-2: string+=test[index]+', and ' elif index < len(test)-2: string+=test[index]+',' else: string+=test[index] return stringspam=[]print('请输入字符(以end结束):')while True: s=input() if s=='end': break else: spam.append(s)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

print(comma(spam))
2.字符图网络
假定有一个列表的列表,内层列表的每个值都是包含一个字符的字符串,像这样:

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', '.', '.', '.'],['.', '.', '.', '.', '.', '.']]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

你可以认为grid[x][y]是一幅“图”在x、y 坐标处的字符,该图由文本字符组
成。原点(0, 0)在左上角,向右x 坐标增加,向下y 坐标增加。
复制前面的网格值,编写代码用它打印出图像。

..OO.OO...OOOOOOO..OOOOOOO...OOOOO.....OOO.......O....
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

提示 你需要使用循环嵌套循环,打印出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 关键字参数。
答:

def picture(test):    for j in range(len(test[0])):        for i in range(len(test)):             print(test[i][j],end='')        print()    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', '.', '.', '.'],['.', '.', '.', '.', '.', '.']]picture(grid)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
print 函数部分应用解析
正则表达式备忘单(持续更新)
(转)Django 模板过滤器列表-东奎博客
超参数优化
使VB的网格控件具有输入功能
php获取textarea的值并处理回车换行的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服