今天我们要探讨的核心问题是程序设计中的一个非常重要的内容——函数。函数的定义和示例已在本期的前导部分讲过,这里不再赘述。直接进入今天的任务:如何像下图中那样,一口气画20个边数各不相同的多边形?

画正多边形的程序前面的课程已经讲了(点此复习),我们得到了如下的代码:

仔细观察上述代码,我们发现,真正绘制正多边形的操作都是在循环部分完成的。那么我们能否把这个循环部分“抽取”出来,变成能独立完成任务的一个“代码块”呢?或者说,我们能否定义一个能绘制正多边形的“函数”呢?如果能,不就离我们要完成的任务更近一步了嘛!

答案当然是肯定的。但还有一个小问题需要解决。

回顾前导部分的函数定义和示例,我们发现定义函数时,一般需要给函数提供一些“数据”,告诉函数到底该计算“几”的平方根,或是在屏幕上显示“什么”字符。这个“几”和“什么”,就是我们提供给函数的“初始数据”,行话叫“参数”。函数只有获得了这些“参数”,才能按照我们的需要做好它的分内之事。

回到我们的“正多边形”函数。虽然绘制正多边形的操作涉及很多因素——边长、旋转角度、边数等,但实际上整个绘制多边形的循环部分都是由一个变量在“操纵”(见上图红框),那就是“sides(边数)”。只要给定边数,我们就能让程序自动绘制出一个尺寸合适的正多边形。其实想想也很容易理解,如果不告诉函数多边形的边数,函数怎么知道该画几边形呢?!

有了这些分析,下面来看具体操作:

Step1:在“import”语句下方,输入“def draw_n_sides(n):”(如下图)。

这是一个标准的“函数定义”语句(行话叫“函数头”,外国话叫“header”),由函数定义标志“def”,函数名“draw_n_sides”、括号内的参数“n”以及语句末尾的“冒号”组成。函数名和参数名可以根据需要自己起,最好是起那种一看到名称就能猜出用途的名字。参数的个数不限,也可以不要参数,但括号一定要有,即使里面没有任何参数也不能省略。

Step2:将原来绘制正多边形的语句拷贝至“函数头”下方,形成“函数体”(外国话叫“body”),并在函数体的每行语句前加“4个空格”或是按1次“Tab键”,形成“缩进”(如下图)。

“缩进”很重要!它是Python中强制性的语法要求(这在前面讲“循环语句”时也提到过),程序在执行时,就是根据“缩进”来判断语句到底是否位于函数体内部的。

Step3:将函数体中的变量“sides”全部替换为“n”——因为函数体中并没有定义变量“sides”,我们在函数体中是用“n”来表示“边数”的(如下图)。

至此,函数已定义完毕,下面就来用一下试试吧!

把程序中原来的绘制正多边形代码删去,替换为我们的“函数名”,并把参数“n”替换为我们之前定义的变量“sides”,如上图所示。

按下“F5”运行。Wow!效果一样很好对不对?而且,看看我们现在的代码,变得多么简洁,只用一句“函数调用”就实现了“绘制正N边形”的功能!

现在我们拥有了一个功能如此强大的函数,再来完成本课的目标就会轻松许多了。

我们再来仔细观察一下我们要绘制的图形——从最上边开始,先是一个“三角形”,然后是一个“正方形”,然后又是一个“正五边形”,再接着是“正六边形”、“正七边形”、……

经过这么一分析,我们的脑海中大概应该已经有了思路——使用一个循环,边数从“3”开始,不断增加,一层层的绘制“正多边形”就行了。

说干就干!

我们使用一个计数循环,将边数的范围设定为“3至12”(先来10次试试),多次调用函数“draw_n_sides”,得到代码如下图。

⚠️注意:将边数的范围设定为“3至12”,需将“range”列表的起止写为(3,13),range列表的规则是“包括起点‘3’,但不包括终点‘13’”,切记!

这里,我们不得不再次感叹,使用函数后的代码“可读性”有了很大提高,因为我们把绘制正N边形的“细节”,全部“隐藏”在了定义函数的过程中。函数的使用者不用关心这个函数到底是怎么画出正多边形的,他们“只管用”就好了!

再次按下“F5”运行,得到了我们的最终结果……

哦不!这是什么?怎么会这样!我们的思路完全正确啊,程序的逻辑也无懈可击,为什么得到的结果却事与愿违?

对于产生这个结果的原因我今天不做过多分析,留给大家进行分析思考,看看您能不能找到问题的根源,并着手把问题解决掉呢?

提示:仔细对比错误图形与正确图形的差别。

项目小结:

在今天的项目中,我们:

学习了“定义函数”的方法;

学习了如何把具有一定功能的一段代码抽取出来,形成一个独立函数的思维过程,这是本课的重点和难点,也是今后很大一部分课程的核心内容;

学习了调用“自己定义的函数”(简称“自定义函数”)的方法。

python绘图函数教程_Python:海龟绘图(七)——初识函数相关推荐

  1. python海龟绘图画玫瑰花_python海龟绘图实例教程

    本文以实例形式介绍了python turtle模块即海龟绘图的使用方法,对于需要进行图形编程的朋友相信会有一定的借鉴价值. python turtle模块简介: python2.6版本中引入的一个简单 ...

  2. python画图turtle小人_python海龟绘图怎么增加每次画圆的半径|海龟python做图教程...

    在python的海龟作图中怎么取一个图形的对称图形 用坐标法吧,turtle默认的初始位置是(0,0),用penup(),goto(),pendown()移动到某个位置,自己算一下就可以.然后,用st ...

  3. python海龟绘图画圣诞帽男人_python海龟绘图实例教程

    本文以实例形式介绍了python turtle模块即海龟绘图的使用方法,对于需要进行图形编程的朋友相信会有一定的借鉴价值. python turtle模块简介: python2.6版本中引入的一个简单 ...

  4. python海龟绘图教程自学网_python海龟绘图实例教程

    本文以实例形式介绍了python turtle模块即海龟绘图的使用方法,对于需要进行图形编程的朋友相信会有一定的借鉴价值. python turtle模块简介: python2.6版本中引入的一个简单 ...

  5. python海龟绘图小猪佩奇_海龟绘图(Turtle Graphics)

    python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使用导入即可 import turtle 先说明一下turtl ...

  6. python turtle详细教程_python 中的turtle使用教程

    python2.6版本中引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics) 1.使用海龟绘图首先我们需要导入turtle,如下所示: from turtle import * # ...

  7. 计算机应用公式求和,Excel函数教程:与求和有关的函数

    Excel函数教程:与求和有关的函数 SUM函数是Excel中使用最多的函数,利用它进行求和运算可以忽略存有文本.空格等数据的单元格,语法简单.使用方便.相信这也是大家最先学会使用的Excel函数之一 ...

  8. 用python函数画德国国旗代码_python海龟绘图之画国旗实例代码

    画之前肯定要知道规格图,我找了一个大致的图. 参考图片: 绘制大星的方法很简单,五角星的补角是144度. 绘制小五角星有点麻烦,因为我国国旗上的小五角星并不是平放的(美帝曾经这样把我们的国旗搞错过), ...

  9. python海龟画笔如何运行_Python海龟绘图:turtle的简单使用

    Python海龟绘图:turtle的简单使用 Python海龟绘图:turtle的简单使用 ? ?Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为 ...

  10. python海龟作图好看图案_python海龟绘图,其实python也很强大,这些技能你知道吗?...

    Turtle库 简介 什么是Turtle 首先,turtle库是一个点线面的简单图像库,能够完成一些比较简单的几何图像可视化.它就像一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始 ...

最新文章

  1. java爬树方法_Java-grandMother.java
  2. 作文计算机使用有什么问题,关于电脑利弊的作文
  3. JAVA JDK+Eclipse IDE for Java Developers下载
  4. PHP函数——urlencode() 函数
  5. linux-简单进程查询
  6. 绿联扩展坞拆解_拆解报告:米物3A1C七合一多功能扩展坞
  7. ffmpeg编码个参数的设置以及作用
  8. 【老生谈算法】matlab实现萤火虫算法源码——萤火虫算法
  9. c 自动打印的服务器,clodop云打印服务器(c_lodop打印机不打印)
  10. 面向对象软件测试开题报告,软件测试开题报告范文.doc
  11. python爬取堆糖网每日精选图片
  12. 内存条性能测试软件,性能测试之内存篇测试方法整理
  13. 职业规划-Android工程师
  14. 【python】解析中英文
  15. MATLAB2012a反复激活
  16. 华为语音解锁设置_华为设置语音服务功能
  17. Docker技术PPT分享给大家
  18. linux上安装java失败,Linux下安装jdk失败怎么办
  19. 快递对接京东,菜鸟,顺丰过程备忘录
  20. 解决iphone4无法格式化号码的问题

热门文章

  1. ERP对企业的作用和价值
  2. 云桌面VOI计算存储在服务器端,云桌面中VOI架构有什么优势和劣势?
  3. 【33】警告Monitor thread (device: 1844301081AEE00F00 [2.4]) - ping was missed, closing the device connec
  4. 想象5年后的你 (转载)
  5. MyCat:第二章:Mycat前世今生,offer来了java面试百度云版
  6. 解决Spyder3闪崩的问题
  7. 计算机学院学生会招新宣传语,学生会招新宣传标语50句
  8. 庆祝:开发小团队组建
  9. 【小技巧】使用多进程加速强化学习训练速度
  10. 桥梁工程师培训-2020.1.14