《Python编程快速上手 让繁琐工作自动化 第2版》读后感1 - 第一部分: Python编程基础
感谢
首先感谢社区组织的读书活动,可以让我有机会接触到《Python编程快速上手 让繁琐工作自动化 第2版》。因为工作中会使用一些Python语言完成数据处理,文件处理,算法验证等工作,自己在网上也学习了一些Python的知识,接着社区的这次读书活动,让我有机会完整的学习Python语言,可以更好的利用它快速的完成我的任务。
最后再次感谢社区和本书的作者以及译者。
第一部分阅读
本书第一部分为Python编程基础,书中从基础的交互式环境建立,数据类型,基础的编程语言、函数,到列表,字典和机构化数据以及字符串操作等共6章内容,完成了python语言编程基础的引入。因为有一定的C语言开发经历,所以对于书中介绍的这些基础知识还是比较容易理解的。
通过阅读本书,我总结了本书第一部分的思维导图:
第一部分习题
第一章习题:
- 下面哪些是操作符,那些是值?
答:
操作符: * , - ,/,+
值:’hello’, -88.8, 5
- 下面哪个是变量,哪个是字符串?
答:
变量:spam
字符串:‘spam’
- 说出3种数据类型
答:
整型,浮点型,字符串等
- 表达式由什么构成?所有表达式都做什么事?
答:
表达式由操作数,运算符和函数调用等组成的语法结构。
所有的表达式都可以求值。
- 本章介绍了赋值语句,如spam=10。表达式和赋值语句有什么区别?
答:
表达式可以求值,赋值语句是将一个值保存到变量中,赋值语句包含变量名,等号和要存储的值。
- 下列语句运行后,变量bacon的值是什么?
答:
bacon的值是20
- 下面连个表达式求值得结果是什么?
答:
‘spam’+’spamspam’ 结果为’spamspamspam’
‘spam’ * 3 结果为 ‘spamspamspam’
- 为什么eggs是有效的变量名,而100是无效的变量名?
答:
Python规定变量名的规则为:只能是一个词,不能带空格;只能包含字母,数字和下划线;不能以数字开头。
基于以上规则eggs是一个合法的变量名,而100是无效的变量名。
- 哪3个函数分别取得一个值的整型、浮点型和字符串形式?
答:
整型:int()
浮点型:float()
字符串:str()
- 为什么下面这个表达式会导致错误?如何修复?
答:
会导致错误,可以修改为:’I have eaten ‘ + str(99) + ‘burritos.’
第二章习题:
1.布尔数据类型的两个值是什么?如何拼写?
答:
布尔数据类型的两个值是True和False
2.3个布尔操作符是什么?
答:
and, or, not
3.写出每个布尔操作符的真值表(也就是操作数的每种可能组合,以及操作的结果)。
答:
4.以下表达式求值的结果是什么?
答:
(5 > 4) and (3==5) 结果 False
not(5 > 4) 结果 False
(5>4) or (3==5) 结果 True
not((5 > 4) or (3 == 5)) 结果 False
(True and True) and (True ==False) 结果 False
(not False) or (not True)结果 True
6.6个比较操作符是什么?
答:
==,!=,<, >, <= , >=
7.解释什么是条件,可以在哪里使用条件。
答:
条件是布尔表达式,总是求一个布尔值,True或False 。可以在控制流语句中使用。
8.识别这段代码中的3个语句块:
答:
代码块1:spam = 0
代码块2:
if spam == 10:
print('eggs')
if spam > 5:
print('bacon')
else:
print('ham')
print('spam')
代码块3:
print(‘spam’)
9.编写代码,如果变量spam中存放1,就输出Hello;如果变量中存放2,就输出Howdy;如果变量中存放其他值,就输出Greetings。
答:
if spam == 1:
print(‘Hello’)
else:
if spam == 2:
print(‘Howdy’)
else:
print(‘Greetings’)
10.如果程序陷在一个无限循环中,你可以按什么键退出循环?
答:
ctrl+c
11.break和continue语句之间的区别是什么?
答:
break的作用是跳出当前的循环;continue的作用是跳回到循环开始处。
12.在for循环中,range(10)、range(0, 10)和range(0, 10, 1)之间的区别是什么?
答:
range(10)包含0,1,2,3,4,5,6,7,8,9
range(0,10)第一个参数是开始值,第二个参数是数值上限,但不包含,结果同range(10)
range(0,10,1)第一个参数是开始值,第二个参数是终止值,第三个参数是步长,结果同range(10)
13.编写一小段程序,利用for循环输出从1到10的数字。然后利用while循环编写一个等价的程序,输出从1到10的数字。
答:
for i in range(10):
print(i+1)
14.如果在名为spam的模块中,有一个名为bacon()的函数,那么在导入spam模块后,如何调用它?
答:
spam.bacon()
第三章习题:
1.为什么在程序中加入函数会有好处?
答:
函数的作用简化需要多次执行的代码组织。
2.函数中的代码何时执行:是在函数被定义时,还是在函数被调用时?
答:
函数的代码在被调用时执行。
3.用什么语句创建一个函数?
答:
def用来定义函数。
4.一个函数和一次函数调用有什么区别?
答:
函数用于定义一个完成一定功能的代码组织。而一次函数调用是执行了一个函数,实现一次函数所定义的功能。
5.Python程序中有多少全局作用域?有多少局部作用域?
答:
有1个全局作用域,和1个局部作用域。
6.当函数调用返回时,局部作用域中的变量发生了什么?
答:
局部作用域中的变量被释放而失效。
7.什么是返回值?返回值可以作为表达式的一部分吗?
答:
函数中使用return返回值,返回值是表达式的结果,而不是表达式的一部分。
8.如果函数没有返回语句,对它进行调用的返回值是什么?
答:
None
9.如何强制函数中的一个变量引用是全局变量?
答:
global
10.None的数据类型是什么?
答:
NoneType
11.import areallyourpetsnamederic语句做了什么?
答:
引入areallyourpetsnamederic模块
12.如果在名为spam的模块中有一个名为bacon()的函数,那在引入spam后,如何调用它?
答:
spam.bacon()
13.如何防止程序在遇到错误时崩溃?
答:
通过异常处理防止程序在遇到错误时崩溃。
14.try子句中发生了什么?except子句中发生了什么?
答:
try子句中执行正常代码,并捕获代码中的错误。except子句中对于程序错误的处理。
第四章习题:
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]求值为多少?
答:
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, 99]
9.连接和复制列表的操作符是什么?
答:
连接操作符 +
复制操作符 *
10.append()和insert()列表方法之间的区别是什么?
答:
append()方法只能把项目添加到列表的末尾,insert()方法可以把项目插入到列表的任意位置。
11.从列表中删除值有哪两种方法?
答:
del() 和 remove()
12.请说出列表值和字符串的几点相似之处。
答:
字符串可以看作是一种特殊的列表,他们都支持索引,切片,迭代等操作。
13.列表和元组之间的区别是什么?
答:
列表是可变的,支持添加,修改和删除元素;元组是不可变的,一旦创建不可修改。他们定义的符号不同,列表采用[]定义,元组采用()定义。
14.如果元组中只有一个整数值42,如何输入该元组?
答:
spam=(42)
15.如何从列表值得到元组形式?如何从元组值得到列表形式?
答:
列表转元组 tuple()
元组转列表 list()
16.“包含”列表的变量,实际上并未直接包含列表。它们包含的是什么?
答:
包含的是列表的引用。
17.copy.copy()函数和copy.deepcopy()函数之间的区别是什么?
答:
copy.copy()可以复制列表的元素;copy.deepcopy()除了复制列表的元素还可以复制内部的列表。
第五章习题:
1.空字典的代码是什么样的?
答:
spam={}
2.一个字典包含键'fow'和值42,它看起来是什么样的?
答:
{‘fow’:42}
3.字典和列表的主要区别是什么?
答:
列表是有顺序的,可以排序,字典是键值对形式的,不能排序
4.如果spam变量是{'bar': 100},那么当你试图访问spam['foo']时,会发生什么?
答:
当访问不存在的键值时,将出现KeyError错误信息。
5.如果一个字典保存在spam变量中,那么表达式'cat' in spam和'cat' in spam.keys()之间的区别是什么?
答:
'cat' in spam本质上是'cat' in spam.keys()的简写版本,他们的结果相同。
6.如果一个字典保存在spam变量中,那么表达式'cat' in spam和'cat' in spam.values()之间的区别是什么?
答:
表达式 'cat' in spam查询’cat’键是否存在;表达式'cat' in spam.values()查询’cat’值是否存在。
7.下面代码的简洁写法是什么?
EEWORLDIMGTK13
答:
spam.setdefault(‘color’, ‘black’)
8.什么模块和函数可以用于输出美观的字典值?
答:
pprint模块中ppprint和pformat方法可以输出美观的字典值
第六章习题:
1.什么是转义字符?
答:
转移字符包含一个倒斜杠(\),用来输入一些无法通过正常方式放入字符串中的字符。
2.转义字符\n和\t代表什么?
答:
\n代表换行符
\t代表制表符
3.如何在字符串中放入一个倒斜杠字符\?
答:
\\
4.字符串"Howl's Moving Castle"是有效字符串。为什么单词中的单引号没有转义,却没有问题?
答:
因为字符串采用双引号定义,因此系统默认单引号为有效字符。
5.如果你不希望在字符串中加入\n,该怎样写一个带有换行的字符串?
答:
使用3个单引号’’’来定义字符串,可以使用回车代替换行符。
6.下面的表达式分别求值为什么?
- 'Hello world!'[1]
- 'Hello world!'[0:5]
- 'Hello world!'[:5]
- 'Hello world!'[3:]
答:
'Hello world!'[1]的值为’e’
'Hello world!'[0:5]的值为’Hello’
'Hello world!'[:5] 的值为’Hello’
'Hello world!'[3:] 的值为’lo world!’
7.下面的表达式分别求值为什么?
- 'Hello'.upper()
- 'Hello'.upper().isupper()
- 'Hello'.upper().lower()
答:
'Hello'.upper()的值为’HELLO’
'Hello'.upper().isupper()的值为True
'Hello'.upper().lower()的值为’hello’
8.下面的表达式分别求值为什么?
- 'Remember, remember, the fifth of November.'.split()
- '-'.join('There can be only one.'.split())
答:
'Remember, remember, the fifth of November.'.split()的值是[‘Remember,’, ‘remember,’, ‘the’, ‘fifth’, ‘of’, ‘November.’]
'-'.join('There can be only one.'.split())的值是’There-can-be-only-one.’
9.什么字符串方法能用于字符串右对齐、左对齐和居中?
答:
字符串右对齐方法rjust();字符串左对齐方法ljust();字符串居中方法center()
10.如何去掉字符串开始或末尾的空白字符?
答:
去掉开头和末尾的空白字符的方法是strip()。
本文来自论坛,点击查看完整帖子内容。