书名:青少年Python趣味编程
ISBN:978-7-115-56781-9
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
编 著 叶永兴 陈娟怀
责任编辑 张天怡
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书从Python的基础语法讲起,然后逐步深入讲解Python的实战应用,重点介绍如何使用Python解决实际遇到的问题,让读者不仅可以系统地学习Python的相关理论知识,还能对Python程序开发有更深入的理解。
本书分为17章,主要内容有编程语言的概念,Python的基础语法,常见函数的使用,自定义函数,面向对象编程,模块的概念,random、time、datetime等常见模块的使用,文件读写,pygame游戏编程,程序事件的概念,GUI编程,程序绘图,数据分析,人工智能等。
本书图文并茂,内容通俗易懂,所含案例丰富,程序步骤清晰,非常适合Python的初学者阅读,也适合相关的机构、学校作为教材使用。
本书是一本基于实例讲解的青少年编程读物,以通俗的例子为切入点,将Python中的复杂知识点化繁为简,旨在让读者从本质上了解Python的使用方法,提高自身思维能力,深化对计算机相关知识的了解。
本书共有17章。第1章介绍编程语言的概念及种类,带领读者进入Python编程的大门;第2~8章讲解Python中的基础语法,包括数字、字符串、列表、字典等基本数据类型以及顺序、分支判断、循环3种基本数据结构;第9~10章讲解Python中的函数和面向对象方法的简单使用;第11~16章讲解一些常用的Python第三方模块的使用,包括如何安装并使用第三方模块,读写常见类型的文件,编写计算机游戏程序,GUI编程的概念,绘制计算机图形等知识;第17章讲解Python在人工智能方面的应用以及健康上网的概念。本书采用案例驱动法,在每一章讲解知识的同时介绍一个具体的程序案例,指导读者使用所学知识完成具体的案例,在实践中强化读者对知识的理解和运用,真正做到融会贯通,学有所用。
本书每一章涉及的编程知识按照由浅入深、由易到难的逻辑进行讲解,对所涉及的计算机专业知识采用生活化的简单例子进行类比,能够让读者实现快速入门,加深读者对一些专业的计算机知识的理解。
书中每一章都会就所学知识提出一个读者接触过的问题,然后让读者带着问题去学习新知识,使学习目标更加明确,学习效率更高。
在每一章讲解完新知识之后,带领读者解决一个综合性问题。在这个过程中,读者可以学会如何分析问题,如何在具体的案例中综合使用所学的知识,从而加深对知识的理解,做到活学活用。
本书基本囊括了Python的所有基础知识点,更是在每一章都安排了实际综合性案例的分析、解决步骤,条理十分清晰。在介绍步骤的同时,本书还使用了大量的图片加以说明,对重点知识做了着重标示,而且对书中所使用的英文单词进行了详细的介绍。
读者可以通过QQ(1743995008)获取图书配套代码。
本书内容通俗易懂,非常适合15岁及以上的零基础读者学习使用。此外,本书也可以作为少儿编程机构培训Python的图书。
由于编者能力有限,在编写的过程中难免有不足之处,恳请广大读者批评指正。
编者
2021年10月
奶奶:“该学习了,你怎么还在玩电脑啊?”
小星:“我在学啊,你看我不是在电脑上学习嘛。”
奶奶:“别玩手机了,我不是叫你帮我出去买点水果吗,你怎么还在玩游戏啊?”
小星:“已经买好了,待会就有人送过来了。”
话音刚落,门外就传来送货员的敲门声。
奶奶:“我手机没有话费了,我要去营业厅交话费,你在家好好学习啊。”
小星:“奶奶,不用出门,我们可以直接在手机上交话费。”
小星在奶奶怀疑的眼神中交完了话费,不一会儿就收到了交费成功的短信……
小星:“奶奶,告诉你哦,现在电脑和手机上有很多功能强大的软件。这些软件通过网络能帮助我们足不出户完成很多事情,极大地方便了我们的生活、学习呢。”
奶奶:“原来是软件这个东西在帮忙,但是说了这么多,到底什么是软件呢?”
…… ……
软件是一种网络中存在的无形的东西,看得到却摸不到,例如微信、QQ、支付宝、网络游戏等都是软件。这些软件在网络中运行,没有具体的形状,也不会像桌子、椅子这样的物件会随着使用时间的增长而有所损耗。只不过随着时间的推移,人们会对其进行更新,增加一些功能,或者是将出现的漏洞“堵上”。
想一想,议一议
既然软件是看得到、摸不到的东西,那它是怎么被人们创造出来的呢?
其实,软件的本质是大量计算机指令的集合,也就是说软件中包含了大量的计算机指令,这些指令对应的是用户的不同操作。当用户使用软件中的某个功能时,软件内部的指令就会“命令”计算机或手机做出相应的反应。这些指令在软件发布之前,就已经被软件开发工程师写入了软件中。那如何将这些指令写入软件中呢?指令是计算机能够读懂的东西,但对人来说,却是比较晦涩难懂的。为了让人能够为计算机编写指令,需要有程序作为中间的翻译。我们的想法先被转化为程序,然后程序再被转化为计算机能够识别的指令,从而实现人与计算机之间的沟通交流,如图1-1所示。
图1-1 程序功能图
程序既然能够帮助我们实现与计算机之间的交流,那如何编写程序呢?编写程序类似于写作文,一篇作文是由很多的文字构成的,同时还有格式、语法要求;程序则是由编程语言构成的,也有格式、语法方面的要求。编程语言和人类语言类似。首先,它也是一门语言,只不过它的交流对象是计算机;其次,编程语言也有很多种类,如图1-2所示。
图1-2 人类语言和编程语言的种类
相信很多读者都有这样的感受:学习英语要比学习汉语难得多。也就是说不同的语言,学习的难度是不一样的。这里选择Python作为要讲解的编程语言,是因为Python相比其他的语言更加易于理解和使用。下面来观察一下用目前几种流行的编程语言实现同一个功能的区别。
1.Java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
2.C++
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World" << endl;
return 0;
}
3.Python
print("Hello World")
观察与思考
上面的3个程序都是实现同一个功能——命令计算机在屏幕上输出一句“Hello World”,哪一个看上去比较简单?
可以看到Java和C++需要5~7行代码,而Python只需要简单的一行代码,并且用Python编写的程序没有那么多符号。通过对比可以得出,实现同一个功能,使用Python编写程序更加简单、花费的时间更短、出现的错误更少。本书后面会用大量的实例验证Python的简单易学性。
“工欲善其事,必先利其器。”要使用Python编写程序,首先需要在计算机上安装一个编写程序的工具。编写Python程序的工具有很多,这里我们使用Python官方推荐的集成开发环境(Integrated Development and Learning Environment,IDLE)。这个工具需要我们自己从网上下载下来,下载的步骤如下。
(1)打开浏览器,输入Python官方网址,下载所需安装包,如图1-3所示。
图1-3 下载页面
(2)找到下载好的安装包,双击开始安装,如图1-4所示。
图1-4 安装包图标
(3)弹出图1-5所示的窗口,根据图中标记的步骤进行安装。
图1-5 安装过程
(4)安装完成之后,打开IDLE可验证是否安装成功,如图1-6所示。
图1-6 打开IDLE
(5)安装成功效果如图1-7所示。
图1-7 IDLE初始窗口
至此,Python编程工具IDLE就安装好了。下面就来使用这个工具编写我们的第一个程序吧。
(1)在打开的IDLE窗口中的 >>> 后输入命令(也叫代码):
print("Hello")
(2)运行程序。
输入完成之后,按Enter键(表示运行编写好的程序),得到的结果如图1-8所示。
图1-8 第一个程序
图1-8中的print("Hello")就是编写的程序代码,程序运行之后,出现的蓝色Hello是计算机执行代码之后的结果。程序运行结束之后,会在结果后面重新出现>>>,表明程序运行结束。
想一想,议一议
在IDLE中编写的程序代码以及程序运行之后的结果,怎么会有那么多不同的颜色呢?
IDLE中的颜色可不只是为了漂亮。IDLE使用这些颜色标记不同功能的程序代码,方便我们区分代码中不同的部分;也可以帮助我们降低在编写代码的过程中出现错误的可能性,因为程序大部分是由英文构成的,读者在初次接触的时候很容易写错。在IDLE中只要写错了代码,对应部分的颜色就会发生变化,如图1-9所示。
图1-9 错误示例
在上面这个例子中,笔者重新编写了一个程序,按Enter键之后,运行结果是一堆红色的信息。这里的红色信息是运行错误的提示信息,阅读提示信息,可以发现笔者将“print”写成了“pront”,这就导致程序不认识而出错。只需要将“pront”重新改为“print”,程序就可以正常运行了。
如果读者运行程序之后,也出现了类似的红色信息,这时候就要好好检查一下自己哪里写错了。在本书后面的章节中,我们将详细讲解如何判断错误以及根据错误信息改正程序的错误部分。
观察与思考
在运行程序的时候,如果代码写错了,能直接在原基础上修改吗?
答案是否定的。如果已经运行程序了,就不能修改已经写好的程序,而是需要重新编写,这是十分麻烦的。其实刚刚我们编写程序的地方叫作交互窗口,它的优点是可以在按Enter键之后马上得到运行结果,缺点是不能修改已经运行过的程序。而且当你单击窗口右上角的关闭按钮关闭窗口之后再重新打开,你会发现之前编写的程序都没有了,也就是说在这个窗口编写的程序没有办法保存。
为了能够保存和修改编写好的程序,我们使用IDLE的另外一种方式来编写程序。下面就来看看这种新方式的使用步骤。
(1)在打开的IDLE窗口中,单击菜单栏中的File → New File选项,如图1-10所示。
图1-10 创建新文件
(2)此时弹出一个新的窗口,这个窗口才是真正编写程序的地方,以后都在这个窗口编写程序,如图1-11所示。
图1-11 编写程序窗口
(3)运行编写好的程序,注意这里不再是按Enter键,而是采用图1-12所示的操作,即单击菜单栏中的 Run → Run Module选项。
图1-12 运行程序操作
可以看到Run Module选项后面有个F5,这是一个快捷方式。也就是说,可以在编写完程序之后,按F5键直接运行程序。
(4)因为编写好程序后尚未保存,所以在运行前会弹出对话框提示保存,单击确定按钮后,会弹出对编写的程序文件进行保存操作的对话框。在弹出的对话框中选择文件的保存位置,为了方便查找自己编写的文件,可以选择将文件保存在桌面上。然后设置文件名称,最后单击保存按钮,步骤如图1-13所示。
图1-13 保存对话框
在保存的同时,程序也开始运行了,运行结果如图1-14所示。
图1-14 运行窗口
到这里,我们就完成了编写程序文件 → 保存文件 → 运行程序的整个操作流程。如果读者想查看编写好的程序文件,可以在文件保存的位置找到文件,右击鼠标,在弹出的快捷菜单中单击图1-15所示的Edit with IDLE → Edit with IDLE 3.7(32-bit)选项打开文件。
图1-15 打开文件
知识加油箱
交互窗口:优点是能够快速地测试简短的程序并得到结果,缺点是不能保存和修改已经编写好的程序。
1. 完成Python编程工具IDLE的安装。
2. 新建一个Python程序文件并保存在计算机桌面上。
我们都知道,一台计算机由显示器、主机、键盘、鼠标等构成。这些部件按照功能的不同,可以划分为输入设备和输出设备。例如,我们可以使用鼠标单击某个软件,敲击键盘输入文本,鼠标和键盘都有向计算机输入信息的作用,所以它们可以被划分为输入设备;显示器是显示内容的设备,它属于输出设备;而主机作为连接输入设备和输出设备的中间设备,对输入的信息进行处理、控制输出信息的显示样式,它里面包含计算机的很多核心零部件。
在Python中,对应的也有具有输入和输出功能的函数。在第1章中,我们讲解了如何使用Python的编程工具,创建并编写了第一个Python程序,虽然只有短短的一行,但是这一行中包含了一个非常重要的指令。先来看下面这个程序:
print("Hello")
观察程序运行之后的结果,可以发现引号内的内容就是要在计算机屏幕上输出的内容。但是这行代码中除了"Hello",还有print(),那它又具有什么功能呢?下面就来详细讲解它到底是什么,具有什么功能。
第1章有一个错误示例,在编写程序时,不小心将“print”写成了“pront”,运行程序之后,出现了一堆红色错误信息。也就是说,程序并不能随心所欲地写,它需要遵循一些规则。就好比写作文一样,不能写错别字,有些词语不能乱用。使用Python编程时,也需要遵守它的规则。
想一想,议一议
如果在IDLE中输入Hello,运行程序之后,会是什么结果呢?
我们可以来试一下。打开IDLE,单击File → New File选项,在窗口中输入Hello,按F5键运行程序。将文件命名为Hello,并保存到计算机桌面上,运行结果如图2-1所示。
图2-1 程序运行结果1
从图2-1的程序运行结果中可以看出,程序运行出错了,错误信息是Hello没有定义,计算机不认识。我们再给Hello加上双引号,然后再次按F5键运行程序,结果如图2-2所示。
图2-2 程序运行结果2
从图2-2可以看到运行之后没有再出现错误信息,对应的"Hello"的颜色也变成了绿色,也就是说加了双引号之后,计算机认识"Hello"了。计算机虽然认识了"Hello",但是在程序运行窗口中还是没有输出任何信息,对比之前编写的正确语句,不难看出只是少了一个print(),现在读者就知道这个print()具有什么功能了吧。
print()是一个输出函数,可以将括号中的内容输出到程序运行窗口。函数是什么呢?它是具有特定功能的代码块,具有简单方便、可重复使用的优点。在本书后面的章节中会对函数的定义、使用方式进行详细的讲解。
知识加油箱
print:意思为“输出、打印”,在程序中用于输出信息。使用print()函数输出内容时,括号中的内容要使用引号引起来,可以使用双引号,也可以使用单引号。
学霸小星在知道print()函数可以输出内容之后,编写了一个程序,运行程序得到的结果如图2-3所示。
图2-3 学霸小星编写的程序
细心的读者可能已经发现,程序编写窗口中的括号被加上了红色阴影,也就是说这个地方出现了错误。原因是小星将括号写成了中文输入法下的括号,导致计算机不认识而出错。其次,前面说过用双引号引起来的内容会变成绿色,而在图2-3小星编写的程序中,引号中的内容并没有变成绿色,这是因为小星将引号也写成了中文输入法下的引号,计算机也不认识。
知识加油箱
在编写程序时,使用的符号(单引号、双引号、括号、感叹号……)都必须是英文输入法下的符号,可以按Shift键切换中英文输入法。
前面我们已经讲解了print()函数,并使用它让计算机跟我们打了个招呼——输出Hello。其实,我们可以通过改变print()函数显示内容的排列方式,改变计算机的“说话”方式。
想一想,议一议
如何编写程序,让计算机在屏幕上输出《静夜思》,输出的形式和图2-4所示的右边一样?
图2-4 带格式的诗句
要用程序实现图2-4左边的效果,只需要使用如下5个print()函数即可:
print(" 静夜思 ")
print("床前明月光,")
print("疑是地上霜。")
print("举头望明月,")
print("低头思故乡。")
那如何实现图2-4右边的这种效果呢?
其实,在使用print()函数输出内容时,还可以通过设置一个参数end来控制输出内容的表现形式。我们只需要在上面代码的基础上添加这个参数,即可将输出形式变为和图2-4右边一样。修改后的代码如下:
print(" 静夜思 ")
print("床前明月光,", end = "")
print("疑是地上霜。", end = "\n")
print("举头望明月,", end = "")
print("低头思故乡。")
对比两个程序输出的结果,可以看出Python默认每一个print()函数的内容独占一行,上面我们用了一个参数end来连接不同的print()函数要显示的内容。例如,end=""就是将两个输出内容直接连接;\n是换行的符号,使用end="\n"连接的两个输出内容之间会有一个换行显示效果。
知识加油箱
end:意思为“结尾、末端”,在程序中可以设置print()函数输出内容的连接形式。
前面我们说到函数中会有参数。参数是填入函数括号中的内容,不同的参数可以使得同一个函数实现不同的功能。函数中的参数有一种叫默认参数,默认参数是指函数中默认有一个参数。如果你不指定默认参数的值,函数会使用默认的参数值;如果你自己指定了该默认参数的值,函数就会使用你指定的参数值。例如,之前用print()函数输出内容,它里面默认有一个换行的参数\n,这就导致输出内容时会自动换行显示,而你自己指定end="",就改变了内容的默认显示形式。
在Python程序中会用到很多的符号,不同的符号对应不同的功能,例如双引号或单引号可以将要输出的内容引起来,函数名后面的括号中可以填入函数所需要的参数及其对应值。符号的正确使用确保了程序的正常运行。
想一想,议一议
根据之前的测试,使用print()函数输出内容时,要先将输出的内容用单引号或是双引号引起来。那同样是引号,如果使用三引号程序能够正常运行吗?
我们可以来试一下。打开IDLE,使用print()函数输出一些文字,代码如下:
print('''我喜欢Python编程''')
运行之后,可以发现程序正常输出了“我喜欢Python编程”这句话。也就是说,三引号的作用和单引号、双引号一样,可以用来将要输出的内容引起来。
但是我们这一节的标题是“偷懒的三引号”,如果只是这样使用,其实它并不比单引号、双引号简单,那这个“偷懒”体现在哪儿呢?
上一节,我们讲解了可以在print()函数中更改end参数的值来控制内容的显示形式,输出《静夜思》这首诗需要5个print()函数,但是如果使用三引号,只需要一个print()函数即可,代码如下:
print('''
静夜思
床前明月光,
疑似地上霜。
举头望明月,
低头思故乡。
''')
程序运行结果如图2-5所示。
图2-5 三引号的使用
运行结果和前面使用5个print()函数的结果是一样的。相比之下,使用三引号大大简化了程序,也不需要改变end参数来控制是否换行显示。三引号的作用为保留括号里三引号中内容的初始样式。使用单引号或是双引号只能显示一行内容,如果输入的是多行内容,程序会报错。
在聊QQ或是微信的时候,只有在你输入信息、单击发送按钮之后,你的信息才能通过网络发送到对方手机上并输出显示出来。这就包含了输入信息的功能和输出显示信息的功能。前面我们已经讲解了输出显示可以使用print()函数,而输入信息则需要通过一个新的函数——input()函数来实现。
在Python中使用input()函数来获取用户输入的内容。下面我们就来编写一个简单的程序,这个程序分为两个部分:一是输入问题,二是输出答案。实现流程如图2-6所示。
图2-6 流程图
实现代码如下:
answer = input("魔镜,我帅吗?\n")
print(answer)
按F5键运行程序,结果如图2-7所示。
图2-7 程序运行结果
下面就图2-7中的运行结果来分析一下。首先将要显示的问题放入input()函数的括号中,这一点input()函数和print()函数的功能是一样的,都可以在屏幕上显示内容。不同的是,input()函数在显示完括号中的内容之后,用户可以在后面输入内容,就像图2-7所示,我们输入“第一帅”。然后给用户输入的内容取个名字叫answer,最后使用print()函数输出用户给出的答案。
这里要注意了,使用input()函数输出内容时,虽然和print()函数一样,会先将括号中填写的内容输出,但是使用input()函数后,括号中必须输入内容,否则程序不会停止,会一直等待用户的输入,这一点和print()函数要区分开。
知识加油箱
input:意思为“输入、投入”,在程序中用于接收用户输入的信息。
1.下面关于print()函数和input()函数的区别正确的说法有( )。
A. print()是输出函数,input()函数是输入函数
B. input()函数也可以和print()函数一样输出内容
C. input()函数的括号中可以什么都不写
D. 使用input()函数之后,如果不输入内容,程序就不会结束
【答案】A、B、C、D。
2. 下面这个程序的运行结果是什么?
print('''hello,
how are you?)
【答案】报错,少了一个三引号。
3.下面这个程序的运行结果是什么?
print("Python", end="")
print("编程",end=",")
print("真有意思!")
【答案】Python编程,真有意思!。
4.预测下面这个程序的运行结果是什么。
user = input("输入内容:")
print(user)
如果用户输入的是 8+6,程序的输出结果是什么?
【答案】8+6。