Python编程与几何图形(txt+pdf+epub+mobi电子书下载)


发布时间:2021-01-21 01:53:50

点击下载

作者:王振世

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python编程与几何图形

Python编程与几何图形试读:

内容简介

本书通过构建多种几何图形或函数曲线的程序实例,由浅及深地阐述Python编程在画几何图形时所需要的知识和方法。每个实例都会让读者体会到几何组合图形的美观和编程思维的精妙,初步建立数学建模、程序分析、程序设计的思维。本书不是侧重Python编程语法,而是重在从解决实际数学问题的角度出发阐述程序设计的逻辑和实现代码,其中涉及的必要的和基本的编程知识及概念,也会讲解。

本书适合具备小学和初中几何知识的读者在入门学习Python编程时使用,可在老师的辅导下学习和使用。

未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。

版权所有,侵权必究。

图书在版编目(CIP)数据

Python编程与几何图形/王振世编著.—北京:电子工业出版社,2020.1(青少年人工智能学习丛书)

ISBN 978-7-121-38314-4

Ⅰ.①P… Ⅱ.①王… Ⅲ.①软件工具-程序设计-青少年读物②计算机图形学-青少年读物 Ⅳ.①TP311.561-49②TP391.411-49

中国版本图书馆CIP数据核字(2020)第010451号

责任编辑:曲 昕

印  刷:

装  订:

出版发行:电子工业出版社

     北京市海淀区万寿路173信箱 邮编:100036

开  本:787×1 092 1/16 印张:10.25 字数:147千字

版  次:2020年1月第1版

印  次:2020年1月第1次印刷

定  价:59.00元

凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。

质量投诉请发邮件至zlts@phei.com.cn,盗版侵权举报请发邮件至dbqq@phei.com.cn。

本书咨询联系方式:(010)88254468,quxin@phei.com.cn。前 言

写作背景

简单的边角关系,构成美丽的图案,从这个角度可以看出数学规律之精美,编程思维之奇妙。数学知识和编程思维的结合,能够大幅拓展各自的边界,绽放出跨界融合后的绚丽花朵。

Python是免费开源的,任何人都可以从Python官网上免费下载Python的安装软件、源代码及其使用说明文档。越来越多的人喜欢使用Python编程,越来越多的行业开始应用Python。Python在人工智能、自动控制、游戏开发、图像与视频处理等很多领域有着广泛的应用,腾讯、阿里、豆瓣、谷歌、YouTube等也在使用Python。

Python编程能够促进学习者对数学几何图形和函数曲线的理解;另一方面,学习者通过对数学知识点的理解,能够编写出高质量的Python程序。

通过对Python编程和数学问题实例化讲解,学习者可以在培养数学运算和逻辑运算能力的基础上,训练出模块化、结构化、流程化的思维,提高对实际问题的洞察力和数学建模能力。这些能力只有在不断的编程实践中,才能逐渐培养出来。

学习方法

基于任务要求、任务分析和问题解决的学习方法比纯粹的编程语言学习更容易让读者接受。

一开始就坐而论道是不好的。我们应该立刻打开Python交互式Shell命令行,随机选择一个我们提供的画图程序,运行后看看画笔是如何在程序的控制下移动的。

本书有大量以几何知识和函数曲线知识为基础的Python程序实例,鼓励读者自行运行、修改、拆分、组装,看看自己的改动如何影响画笔运行的轨迹,进而影响最终的图形效果。一旦学习者在数学和几何知识的基础上,尝试利用Python画图,就会很快发现二者的巧妙结合带来的无穷乐趣,进而激发学习数学和编程的动力。

本书特点

从知识点的角度组织Python学习内容的书有很多,但针对青少年的以编程任务目标来组织Python学习内容的书却很少。

本书在《Python编程与初级数学》的基础上,进一步讲解Python编程实例,涉及的数学内容大多是小学、初中学生接触到的知识点。本书围绕构建各种几何图形或函数曲线的程序设计目标,由浅及深地阐述Python编程在画几何图形时所需要的知识和思维。本书虽然不主要讲解编程语法,但也会讲解在完成几何作图的程序实例中涉及的必要和基本的编程知识及概念。

本书对计算机软硬件环境要求简单,只要拥有一台电脑,安装好Windows操作系统和Python,便可以完成书中所有程序实例。可从电子工业出版社华信教育资源网站(www.hxdeu.com.cn)下载本书附带的源代码。

本书结构

本书一共包括10个Python编程实例,讲解10类图形的绘制方法。每个实例都包括编程能力要求的雷达图、任务描述、完成这个任务用到的数学知识点和编程知识点,然后给出任务分析、程序设计和运行结果。在此基础上,再提出几个发散性思考的问题,引导学习者进一步探索。在每个实例的最后,以“挑战自我”的形式提出一个类似的任务,让学习者自己完成。给出的“挑战自我”的参考程序可以正确执行,但它们不是唯一答案,学习者还可以探索其他可能的实现方式。

在学习和实践完10个画图程序之后,附录里总结了turtle库中画图的常用函数、math库中的常用函数。最后提供了7个常见的经典图形绘制的实例及其参考程序代码,大家可以学习和实践,最好能够给出更好的编程实现思路。

如果你还没有安装好Python程序,如果还不知道如何编写和运行一个Python程序,请按照本书的“环境准备”部分的内容完成Python环境及应用的安装,打开Python,再开始你的画图之旅。

适合读者

本书尤其适合广大青少年在Python编程入门时使用,也可以在加深相关几何图形知识的理解时参考。

致谢

首先感谢我的父亲和母亲,是他们的持续鼓励和默默支撑,使我能够长时间专注于计算机编程语言的科普写作。其次,要感谢我的妻子和孩子,温暖的家庭是我持续奋斗的原动力。

我还要感谢电子工业出版社的曲昕女士,曲昕女士对本书精益求精的工作精神,令我佩服,感谢她充分为读者考虑和持续付出的精神。

最后,感谢所有的读者朋友,你们的持续关注是原创作者最大的欣慰。

由于笔者水平有限,书中难免存在疏漏和错误之处,敬请批评指正。王振世2019年12月环境准备——安装Python

Python的编程运行环境是Python编程学习的前提。把Python安装到电脑后,系统将会新增运行Python程序的解释器、Python命令行交互环境以及Python的集成开发环境(即IDLE)。

Python的安装过程

1.下载安装包

打开Python的官方下载界面,如图0-1所示。图0-1 Python官方下载界面

2.安装Python

在Windows系统上找到下载的Python安装包,双击“python-3.7.1”文件,如图0-2所示,在出现的页面中选中“Add Python3.7 to PATH”,单击“Install Now”。

接着,出现如图0-3所示的Python安装进度指示,等待安装完毕后,出现如图0-4所示的页面。图0-2 运行下载好的Python安装包图0-3 Python安装进度

3.测试Python安装环境

在Windows命令行界面中输入Python命令,出现Python的输入提示符“>>>”,说明Python安装成功,如图0-5所示。在“>>>”后输入“25+75”,回车后,可得到运算结果100。图0-4 Python安装完毕图0-5 Python安装成功

在“>>>”后输入“exit()”并回车,可以退出Python交互式环境。当然,也可以直接关掉命令行窗口。

如果在Windows的命令行界面中输入“Python”并回车,会出现“‘Python’不是内部或外部命令,也不是可运行的程序或批处理文件。”这是因为在安装时,漏掉了勾选“Add Python 3.7 to Path”。这时,可以把Python安装程序再运行一遍,在出现的界面上选择“Modify”,然后单击“Next”,在如图0-6所示的界面中,勾选“Add Python to environment variables”,单击“Install”进行安装。图0-6 选中“Add Python to environment variables”实例01 从“点”开始

能力5象限

数学能力

逻辑能力

编程语言

动手能力

纠错能力1.1 任务描述

用Python编程,在屏幕上随机地画出很多点来。1.2 数学知识点(1)点

点是最简单的图形,是几何图形最基本的组成元素。在欧氏几何中,点是只有位置没有大小的图形,平面中不同位置的点如图1-1所示。点在空间中是1个0维度的对象。图1-1 平面中不同位置的点(2)直角坐标系

在平面内画两条互相垂直,且有公共原点的数轴。其中横轴为x轴,纵轴为y轴。这两个相互垂直的轴把平面分为四个部分,从右上角开始数起,按照逆时针方向,分别为第1象限,第2象限,第3象限,第4象限。这样在平面上建立了直角坐标系,如图1-2所示。

这样,我们可以用一个有序数对表示平面上某个点的位置,这个有序数对叫坐标。表示方法为(a,b),a是该点在横轴上对应的数值,b是该点在纵轴上对应的数值。点(2,-2)所在的位置就是第4象限中横坐标是2,纵坐标是-2的位置。图1-2 直角坐标系1.3 编程知识点(1)turtle库

turtle库是Python入门级的图形绘制函数库,是Python自带的标准库之一。使用turtle库绘图,可以想象有一只海龟在画布上移动,默认初始位置在画布的正中心,海龟走过的轨迹就形成了绘制的图形。移动的海龟由程序控制,可以变换颜色、宽度、大小、位置、方向等。

用import调用turtle库可以有三种形式:

第一种直接用“import+turtle”导入turtle库,如图1-3所示。后续使用turtle库时,需要使用turtle库名。如果回车以后没有错误提示,则表示导入库成功。图1-3 导入turtle库

第二种用“import+turtle+as+别名”导入turtle库,如图1-4所示,在后续使用turtle库时,可以直接用别名代替。如果回车以后没有错误提示,则表示导入库成功。图1-4 导入turtle库,别名为pic

第三种用“from+库名+import*”导入turtle库,from import方式导入turtle库如图1-5所示,后续使用这个库里的函数或方法时,不需要再说明库名称。如果回车以后没有错误提示,表示导入库成功。图1-5 from import方式导入turtle库(2)画布的坐标系

turtle库画图的平面被称为画布(canvas),原点(0,0)在画布的正中央,即1/2画布高、1/2画布宽的位置。以画布中央的点为原点(0,0),建立一个横轴为x轴、纵轴为y轴的坐标系,小海龟画笔在画布上移动的位置,就可以在这个直角坐标系中确定下来,如图1-6所示。图1-6 turtle画布中的坐标系

在画布中,坐标(x,y)的单位是像素。这个单位与液晶显示屏的尺寸及分辨率有关。屏幕越大,分辨率越小,像素代表的实际尺寸越大。

在画布中,点(20,-30)的位置在画布的右下角,即第4象限,距离y轴20像素,距离x轴30像素。(3)移动画笔函数goto()

画笔的默认位置在画布中央。在turtle画布中,使用函数goto()可以移动画笔到指定位置。

移动画笔位置的程序代码如图1-7所示,导入turtle库,别名为pic,分别按顺序调用了4次turtle库中的函数goto()。最初,画笔在原点(0,0)的位置上,使用函数goto(100,100)将画笔从原点移动到了第1象限的(100,100)位置上;然后使用函数goto(-100,50)将画笔移动到了第2象限的(-100,50)位置上,再使用函数goto(-50,-50)将画笔移动到了第3象限的(-50,-50)位置,最后使用函数goto(50,-100)将画笔移动到了第4象限的(50,-100)位置。程序运行结果为如图1-8所示的画笔运行轨迹(黑色部分)。图1-7 移动画笔位置的程序代码图1-8 程序运行结果:移动画笔的轨迹(4)画点函数dot()

在turtle库中,用来画点的函数为dot()。点最重要的属性就是位置,这和几何里点的属性一样。在几何里,点没有大小和颜色;但使用turtle库的画点函数时,点是可以指定大小和颜色的。格式为:

如dot(5,“green”)就是画一个直径为5的绿点。直接用dot(),不指定任何参数时,点的直径的默认大小是max(画笔宽度+4,2×画笔宽度),颜色是黑色。

画4个点的程序代码如图1-9所示。导入turtle库,别名为pic,分别按顺序调用4次turtle库中的函数dot()。这里没有使用函数goto()移动画笔的位置,所以画笔一直在原点(0,0)处。图1-9 画4个点的程序代码

dot(100,“orange”)以原点为中心,画一个直径为100像素的橙色的点;dot(50,“red”)以原点为中心,画一个直径为50像素的红色的点;dot(10,“purple”)以原点为中心,画一个直径为10像素的紫色的点;pic.dot()以原点为中心,画一个默认大小的黑点。运行这段程序,得到的图形如图1-10所示。图1-10 程序运行结果:位置在原点的不同大小的点(5)抬笔函数penup()和落笔函数pendown()

在(0,0)、(50,0)、(100,0)处分别画三个点,代码如图1-11所示。画笔的初始位置在(0,0)处,调用函数dot()画一个默认大小的黑点;然后使用函数goto(50,0)将画笔挪到第二个点的位置,画同样的点;最后使用函数goto(100,0)将画笔挪到第三个点的位置,画一个同样的点。图1-11 不同位置画三个点的程序代码

程序运行结果如图1-12所示。图1-12 程序运行结果:画三个点(有画笔移动轨迹)

如果我们只想画三个点,不想呈现画笔移动的轨迹,该怎么办呢?画点的时候,使用落笔函数pendown(),移动画笔的时候使用抬笔函数penup(),程序代码如图1-13所示。在原点画一个点后,使用函数penup()抬笔,将画笔移动到(50,0)位置上,此时由于画笔处于“抬起”的状态,画笔并不留下移动痕迹。在位置(50,0)画第2个点之前,使用函数pendown()落笔。画第3个点也如此操作。程序运行结果如图1-14所示。图1-13 不同位置画点(有抬笔、落笔)的程序代码图1-14 程序运行结果:画三个点(没有画笔移动轨迹)(6)for循环

在上面画3个点的示例中,调用函数dot()三次,调用函数goto()、落笔函数pendown()、抬笔函数penup()各两次。如果画很多点,就要重复很多次上面的代码,非常烦琐。对于这种有规律可循的动作,用循环语句实现可以大大简化编程复杂度。

比如,在画三个点的程序中,使用for循环来简化代码,如图1-15所示。需要画的点数越多,代码的简化量越大。图1-15 使用for循环简化画三个点的程序代码

在for循环中,执行的动作包括抬笔penup()、移动画笔goto()、落笔pendown()、画点dot()4个动作。虽然在图1-15的左图中,由于在原点处画第1个点,没有抬笔、移动画笔、落笔的动作,但为了实现循环,在画笔初始位置画点时同样加上抬笔、移动到原点、落笔的动作。

在函数range(3)中确定了for循环的次数。range(3)相当于0,1,2三个数,i依次从这三个数中取值。变量x是为了依次生成3个点的坐标位置。这3个点在x轴上,间距是50像素。(7)随机数

在Python中产生随机数需要调用random库。randint()函数用于随机生成一个指定范围内的整数。如randint(a,b)生成[a,b]之间包括a和b的整数,其中a≤b。

默认画布的长为400像素,高为300像素。为了在画布上生成一个点的随机位置,可以使用函数randint()生成坐标和直径。x可以在[-200,200]中随机选取,y可以在[-150,150]中随机选取。点的直径d可以在[1,50]中随机选取。

randint(-200,200)、randint(-150,150)、randint(1,50)生成的数如图1-16所示。每次运行这些函数时,生成的整数是不一样的。图1-16 随机生成一个整数的程序代码1.4 任务分析

若要在屏幕上随机画出很多点,需要导入两个库:一个是画图的turtle库,另一个是生成随机数的random库。由于要生成很多点,需要用到循环语句。在循环体里,需要完成的事情有生成点的随机位置、生成点的随机大小、抬笔、把画笔挪到相应位置、落笔、画点。整个过程如下:1.5 程序设计

在Python的文件编辑器里,新建一个dotsrandom.py文件,完成随机生成点的程序设计,程序代码如图1-17所示。在导入turtle库的时候,给该库对象起一个别名pic;在导入random库的时候,给该库对象起一个别名r。使用for循环,循环100次,生成100个点。在每次循环中,使用随机函数randint()随机生成点的坐标(x,y)和点的直径d。然后抬笔penup(),移动画笔goto(x,y),落笔pendown(),画点dot()。图1-17 随机生成点的程序代码1.6 运行结果

运行dotsrandom.py程序,输出随机生成点如图1-18所示。图1-18 程序运行结果:随机生成点1.7 发散思考(a)如果把程序中的函数penup()和pendown()都去掉,效果会怎样?

去掉图1-17所示程序中的函数penup()和pendown()后,运行结果如图1-19所示。图1-19 程序运行结果:没有抬笔落笔动作的随机点图(b)如果把点的纵轴范围限制在[-100,100]之间,效果会怎样?

如果把图1-17所示程序中的y=r.randint(-150,150)改为y=r.randint(-100,100),运行结果如图1-20所示。图1-20 程序运行结果:纵轴方向压扁的随机点图1.8 挑战自我

编写一个Python程序,从屏幕中随机生成很多黑脸图标,如图1-21所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载