Python编程:从入门到实践
埃里克·马瑟斯
28个想法
前言
>> 看到家人玩着我编写的游戏,而且它完全按我预期的方式运行,我心里不知有多满足。此情此景我永远都忘不了。
Part 1 第一部分 基础知识
>> 你需要安装它。你还要安装一个文本编辑器,用于编写和运行Python程序。
>> 请安装Python 3
>> print("Hello world! ")
>> Linux系统
>> Geany是一款简单的文本编辑器
>> 创建一个用于存储项目的文件夹,并将其命名为python_work(在文件名和文件夹名中,最好使用小写字母,并使用下划线来表示空格,因为这是Python采用的命名约定)
>> 为此,可按超级(Super)键(俗称Windows键),并在系统中搜索Geany。找到Geany后,双击以启动它;再将其拖曳到任务栏或桌面上,以创建一个快捷方式。接下来,创建一个用于存储项目的文件夹,并将其命名为python_work(在文件名和文件夹名中,最好使用小写字母,并使用下划线来表示空格,因为这是Python采用的命名约定)
>> traceback
>> 在编程中,语法非常重要,即便是少一个冒号、引号不匹配或括号不匹配,都可能导致程序无法正确地运行。请再次阅读本章相关的内容,再次审视你所做的工作,看看能否找出错误。
>> directory
>> Desktop\python_work
第2章 变量和简单数据类型
>> 第2章 变量和简单数据类型[插图]在本章中,你将学习可在Python程序中使用的各种数据,还将学习如何将数据存储到变量中,以及如何在程序中使用这些变量。
>> 看到单词print时,解释器就会将括号中的内容打印到屏幕,而不会管括号中的内容是什么。
>> 编写程序时,编辑器会以各种方式突出程序的不同部分。例如,它知道print是一个函数的名称,因此将其显示为蓝色;它知道“Hello Python world! ”不是Python代码,因此将其显示为橙色。这种功能称为语法突出,在你刚开始编写程序时很有帮助。
>> title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写
>> 这种合并字符串的方法称为拼接。通过拼接,可使用存储在变量中的信息来创建完整的消息。下面来看一个例子: first_name = "ada" last_name = "lovelace" full_name = first_name + " " + last_name❶ print("Hello, " + full_name.title() + "! ")
>> Hello, Ada Lovelace!你
>> 在编程中,空白泛指任何非打印字符,如空格、制表符和换行符。你可使用空白来组织输出,以使其更易读。
>> 还可在同一个字符串中同时包含制表符和换行符。字符串"\n\t"让Python换到下一行,并在下一行开头添加一个制表符。下面的示例演示了如何使用一个单行字符串来生成四行输出:>>>print("Languages:\n\tPython\n\tC\n\tJavaScript")Languages: Python C JavaScript
>> 下面演示了如何正确地使用单引号和双引号
>> Albert Einstein once said, “A person who never made a mistake never tried anything new.”
>> 在Python中,可对整数执行加(+)减(-)乘(*)除(/)运算。
>> Python使用两个乘号表示乘方运算:
>> Python将带小数点的数字都称为浮点数。
>> 每种编程语言都须细心设计,以妥善地处理浮点数,确保不管小数点出现在什么位置,数字的行为都是正常的。
>> Traceback (most recent call last): File "birthday.py", line 2, in
>> Python知道,这个变量表示的可能是数值23,也可能是字符2和3。像上面这样在字符串中使用整数时,需要显式地指出你希望Python将这个整数用作字符串。为此,可调用函数str(),
Python编程:从入门到实践
埃里克·马瑟斯
20个想法
Part 1 第一部分 基础知识
>> 大致了解了Python,并在自己的系统中安装了Python。你还安装了一个文本编辑器,以简化Python代码的编写工作。你学习了如何在终端会话中运行Python代码片段,并运行了第一个货真价实的程序——hello_world.py。你还大致了解了如何解决安装问题。
第2章 变量和简单数据类型 习题
>> 动手试一试请完成下面的练习,在做每个练习时,都编写一个独立的程序。保存每个程序时,使用符合标准Python约定的文件名:使用小写字母和下划线,如simple_message.py和simple_messages.py。2-1简单消息:将一条消息存储到变量中,再将其打印出来。2-2多条简单消息:将一条消息存储到变量中,将其打印出来;再将变量的值修改为一条新消息,并将其打印出来。2
>> 动手试一试在做下面的每个练习时,都编写一个独立的程序,并将其保存为名称类似于name_cases.py的文件。如果遇到了困难,请休息一会儿或参阅附录C提供的建议。2-3个性化消息:将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello Eric, would you like to learn some Python today? ”。2-4调整名字的大小写:将一个人名存储到一个变量中,再以小写、大写和首字母大写的方式显示这个人名。2-5名言:找一句你钦佩的名人说的名言,将这个名人的姓名和他的名言打印出来。输出应类似于下面这样(包括引号):Albert Einstein once said, “A person who never made a mistake never tried anything new.”2-6名言2:重复练习2-5,但将名人的姓名存储在变量famous_person中,再创建要显示的消息,并将其存储在变量message中,然后打印这条消息。2-7剔除人名中的空白:存储一个人名,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合"\t"和"\n"各一次。
>> 打印这个人名,以显示其开头和末尾的空白。然后,分别使用剔除函
>> 动手试一试2-8数字8:编写4个表达式,它们分别使用加法、减法、乘法和除法运算,但结果都是数字8。为使用print语句来显示结果,务必将这些表达式用括号括起来,也就是说,你应该编写4行类似于下面的代码:print(5 + 3)输出应为4行,其中每行都只包含数字8。2-9最喜欢的数字:将你最喜欢的数字存储在一个变量中,再使用这个变量创建一条消息,指出你最喜欢的数字,然后将这条消息打印出来。
>> 动手试一试2-10添加注释:选择你编写的两个程序,在每个程序中都至少添加一条注释。如果程序太简单,实在没有什么需要说明的,就在程序文件开头加上你的姓名和当前日期,再用一句话阐述程序的功能。
>> 动手试一试2-11 Python之禅:在Python终端会话中执行命令import this,并粗略地浏览一下其他的指导原则。
>> 如何使用变量;如何创建描述性变量名以及如何消除名称错误和语法错误;字符串是什么,以及如何使用小写、大写和首字母大写方式显示字符串;使用空白来显示整洁的输出,以及如何剔除字符串中多余的空白;如何使用整数和浮点数;使用数值数据时需要注意的意外行为。你还学习了如何编写说明性注释,让代码对你和其他人来说更容易理解。最后,你了解了让代码尽可能简单的理念。
第3章 列表简介 习题
>> 动手试一试请尝试编写一些简短的程序来完成下面的练习,以获得一些使用Python列表的第一手经验。你可能需要为每章的练习创建一个文件夹,以整洁有序的方式存储为完成各章的练习而编写的程序。3-1姓名:将一些朋友的姓名存储在一个列表中,并将其命名为names。依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来。3-2问候语:继续使用练习3-1中的列表,但不打印每个朋友的姓名,而为每人打印一条消息。每条消息都包含相同的问候语,但抬头为相应朋友的姓名。3-3自己的列表:想想你喜欢的通勤方式,如骑摩托车或开汽车,并创建一个包含多种通勤方式的列表。根据该列表打印一系列有关这些通勤方式的宣言,如“I would like to own a Honda motorcycle”。
>> 动手试一试下面的练习比第2章的练习要复杂些,但让你有机会以前面介绍过的各种方式使用列表。3-4嘉宾名单:如果你可以邀请任何人一起共进晚餐(无论是在世的还是故去的),你会邀请哪些人?请创建一个列表,其中包含至少3个你想邀请的人;然后,使用这个列表打印消息,邀请这些人来与你共进晚餐。3-5修改嘉宾名单:你刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。❑ 以完成练习3-4时编写的程序为基础,在程序末尾添加一条print语句,指出哪位嘉宾无法赴约。❑ 修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名。❑ 再次打印一系列消息,向名单中的每位嘉宾发出邀请。3-6添加嘉宾:你刚找到了一个更大的餐桌,可容纳更多的嘉宾。请想想你还想邀请哪三位嘉宾。❑ 以完成练习3-4或练习3-5时编写的程序为基础,在程序末尾添加一条print语句,指出你找到了一个更大的餐桌。❑ 使用insert()将一位新嘉宾添加到名单开头。❑ 使用insert()将另一位新嘉宾添加到名单中间。❑ 使用append()将最后一位新嘉宾添加到名单末尾。❑ 打印一系列消息,向名单中的每位嘉宾发出邀请。3-7缩减名单:你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。❑ 以完成练习3-6时编写的程序为基础,在程序末尾添加一行代码,打印一条你只能邀请两位嘉宾共进晚餐的消息。❑ 使用pop()不断地删除名单中的嘉宾,直到只有两位嘉宾为止。每次从名单中弹出一位嘉宾时,都打印一条消息,让该嘉宾知悉你很抱歉,无法邀请他来共进晚餐。❑ 对于余下的两位嘉宾中的每一位,都打印一条消息,指出他依然在受邀人之列。❑ 使用del将最后两位嘉宾从名单中删除,让名单变成空的。打印该名单,核实程序结束时名单确实是空的。
>> 动手试一试3-8放眼世界:想出至少5个你渴望去旅游的地方。❑ 将这些地方存储在一个列表中,并确保其中的元素不是按字母顺序排列的。❑ 按原始排列顺序打印该列表。不要考虑输出是否整洁的问题,只管打印原始Python列表。❑ 使用sorted()按字母顺序打印这个列表,同时不要修改它。❑ 再次打印该列表,核实排列顺序未变。❑ 使用sorted()按与字母顺序相反的顺序打印这个列表,同时不要修改它。❑ 再次打印该列表,核实排列顺序未变。❑ 使用reverse()修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了。❑ 使用reverse()再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。❑ 使用sort()修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了。❑ 使用sort()修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了。3-9晚餐嘉宾:在完成练习3-4~练习3-7时编写的程序之一中,使用len()打印一条消息,指出你邀请了多少位嘉宾来与你共进晚餐。3-10尝试使用各个函数:想想可存储到列表中的东西,如山岳、河流、国家、城市、语言或你喜欢的任何东西。编写一个程序,在其中创建一个包含这些元素的列表,然后,对于本章介绍的每个函数,都至少使用一次来处理这个列表。
>> ❑ 再次打印该列表,核实排列顺序未变。
❑ 使用reverse()修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了。
❑ 使用reverse()再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。
❑ 使用sort()修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了。
❑ 使用sort()修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了。
3-9晚餐嘉宾:在完成练习3-4~练习3-7时编写的程序之一中,使用len()
>> 动手试一试3-11有意引发错误:如果你还没有在程序中遇到过索引错误,就尝试引发一个这种错误。在你的一个程序中,修改其中的索引,以引发索引错误。关闭程序前,务必消除这个错误。
>> 列表是什么以及如何使用其中的元素;如何定义列表以及如何增删元素;如何对列表进行永久性排序,以及如何为展示列表而进行临时排序;如何确定列表的长度,以及在使用列表时如何避免索引错误。
第4章
学习内容
>> 如何高效地处理列表中的元素;如何使用for循环遍历列表,Python如何根据缩进来确定程序的结构以及如何避免一些常见的缩进错误;如何创建简单的数字列表,以及可对数字列表执行的一些操作;如何通过切片来使用列表的一部分和复制列表。你还学习了元组(它对不应变化的值提供了一定程度的保护),以及在代码变得越来越复杂时如何设置格式,使其易于阅读。
操作列表 习题
>> 动手试一试
4-1比萨:想出至少三种你喜欢的比萨,将其名称存储在一个列表中,再使用for循环将每种比萨的名称都打印出来。❑ 修改这个for循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名称。对于每种比萨,都显示一行输出,如“I like pepperoni pizza”。❑ 在程序末尾添加一行代码,它不在for循环中,指出你有多喜欢比萨。输出应包含针对每种比萨的消息,还有一个总结性句子,如“I really love pizza! ”。
4-2动物:想出至少三种有共同特征的动物,将这些动物的名称存储在一个列表中,再使用for循环将每种动物的名称都打印出来。❑ 修改这个程序,使其针对每种动物都打印一个句子,如“A dog would make a great pet”。❑ 在程序末尾添加一行代码,指出这些动物的共同之处,如打印诸如“Any of these animals would make a great pet! ”这样的句子。
4-3数到20:使用一个for循环打印数字1~20(含)。
4-4一百万:创建一个列表,其中包含数字1~1000000,再使用一个for循环将这些数字打印出来(如果输出的时间太长,按Ctrl + C停止输出,或关闭输出窗口)。
4-5计算1~1000000的总和:创建一个列表,其中包含数字1~1000000,再使用min()和max()核实该列表确实是从1开始,到1000000结束的。另外,对这个列表调用函数sum(),看看Python将一百万个数字相加需要多长时间。
4-6奇数:通过给函数range()指定第三个参数来创建一个列表,其中包含1~20的奇数;再使用一个for循环将这些数字都打印出来。
4-7 3的倍数:创建一个列表,其中包含3~30内能被3整除的数字;再使用一个for循环将这个列表中的数字都打印出来。
4-8立方:将同一个数字乘三次称为立方。例如,在Python中,2的立方用2**3表示。请创建一个列表,其中包含前10个整数(即1~10)的立方,再使用一个for循环将这些立方数都打印出来。
4-9立方解析:使用列表解析生成一个列表,其中包含前10个整数的立方。
4-10切片:选择你在本章编写的一个程序,在末尾添加几行代码,以完成如下任务。❑ 打印消息“The first three items in the list are:”,再使用切片来打印列表的前三个元素。❑ 打印消息“Three items from the middle of the list are:”,再使用切片来打印列表中间的三个元素。❑ 打印消息“The last three items in the list are:”,再使用切片来打印列表末尾的三个元素。
4-11你的比萨和我的比萨:在你为完成练习4-1而编写的程序中,创建比萨列表的副本,并将其存储到变量friend_pizzas中,再完成如下任务。❑ 在原来的比萨列表中添加一种比萨。❑ 在列表friend_pizzas中添加另一种比萨。❑ 核实你有两个不同的列表。为此,打印消息“My favorite pizzas are:”,再使用一个for循环来打印第一个列表;打印消息“My friend's favorite pizzas are:”,再使用一个for循环来打印第二个列表。核实新增的比萨被添加到了正确的列表中。
4-12使用多个循环:在本节中,为节省篇幅,程序foods.py的每个版本都没有使用for循环来打印列表。请选择一个版本的foods.py,在其中编写两个for循环,将各个食品列表都打印出来。
4-13自助餐:有一家自助式餐馆,只提供五种简单的食品。请想出五种简单的食品,并将其存储在一个元组中。❑ 使用一个for循环将该餐馆提供的五种食品都打印出来。❑ 尝试修改其中的一个元素,核实Python确实会拒绝你这样做。❑ 餐馆调整了菜单,替换了它提供的其中两种食品。请编写一个这样的代码块:给元组变量赋值,并使用一个for循环将新元组的每个元素都打印出来。
4-14 PEP 8:请访问https://python.org/dev/peps/pep-0008/,阅读PEP 8格式设置指南。当前,这些指南适用的不多,但你可以大致浏览一下。
4-15代码审核:从本章编写的程序中选择三个,根据PEP 8指南对它们进行修改。❑ 每级缩进都使用四个空格。对你使用的文本编辑器进行设置,使其在你按Tab键时都插入四个空格;如果你还没有这样做,现在就去做吧(有关如何设置,请参阅附录B)。❑ 每行都不要超过80字符。对你使用的编辑器进行设置,使其在第80个字符处显示一条垂直参考线。❑ 不要在程序文件中过多地使用空行。