前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >青少年编程:用Python探究数学(4)

青少年编程:用Python探究数学(4)

作者头像
老齐
发布2020-06-16 18:27:13
4850
发布2020-06-16 18:27:13
举报
文章被收录于专栏:老齐教室老齐教室

经过前面的学习,你已经对编程有了一点了解,本节我们要更进一步:写个函数。

在初中数学中,有对函数的详细解释,此处不赘述。

对于Python里面的函数,有自己的独特定义方法。

还是打开myturtle.py文件,将其中的代码修改为:

代码语言:javascript
复制
from turtle import *

shape("turtle")

def polygon():
    for i in range(4):
        forward(100)
        right(90)

polygon()

上面代码中的第1、3行没有变化,请读者注意的是第5行,这一行开始定义一个函数:

  • def是Python中定义函数的关键词,看到它就意味着现在要开始写一个函数了。
  • polygon是当前所定义的函数的名字,一般用小写字母表示。
  • ()这个括号里面应该写函数的参数,现在我们暂时不写参数,但是括号还是要写上,不能不写。

注意第6行到第8行,就是我们已经熟悉的绘制正方形的程序——前面使用过的,放到了这里,但是,注意第6行,相对函数左侧要有四个空格的缩进,后面各行依次缩进。这样,用缩进的方式就表示第6行到第8行,是当前函数polygon的代码块,只有在调用这个函数的时候,这部分代码才被执行。

如何调用这个函数?第10行,就是调用这个函数。

F5键执行此文件,同样画出了那个正方形——请读者自行调试。

上面这个函数好像也没有显示出什么特别,就是把原有的代码“打包”放到函数里面了,能不能让函数更灵活一些呢?

那就继续修改。

代码语言:javascript
复制
from turtle import *

shape("turtle")

def polygon(side):
    for i in range(4):
        forward(side)
        right(90)

polygon()

这次修改了第5行和第7行:

  • 第5行中增加了一个参数side,它表示多边形的边长
  • 第7行就要使用这个参数,当调用这个函数的时候,就按照该参数的值绘制多边形。

如果完成了上述修改,就执行此文件,会出现如下情况:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/qiwsir/Documents/Codes/mathadventure/myturtle.py", line 16, in <module>
    polygon()
TypeError: polygon() missing 1 required positional argument: 'side'

报错的原因是,我们所调用的函数polygon已经有参数了,不能再如同原来那样调用。

修改如下:

代码语言:javascript
复制
from turtle import *

shape("turtle")

def polygon(side):
    for i in range(4):
        forward(side)
        right(90)

polygon(100)
polygon(50)
polygon(25)

上面修改之后的文件中,连续三次调用polygon函数,但是参数不同,也就是要按照三个不同的边长绘制正方形。

从上面的执行效果中,可以看到函数的一个好处,那就是避免了同样代码的重复。如果按照以往的做法,我们分别画不同边长的多边形,需要将第6行到第8行的代码重复若干遍,但是,现在只需要调用若干次该函数即可。

函数中的参数最多可以多少个?理论上是没有个数限制的,但是,太多了有点麻烦。不过,在画多边形的这个示例中,根据前面的学习,我们知道,至少还可以设置多边形的边数。

于是乎这个函数还可以这么写。

代码语言:javascript
复制
from turtle import *

shape("turtle")
n = input("请输入多边形的边数:")
length = input("请输入多边形的边长:")

def polygon(side, n):
    alpha = 360 / n
    for i in range(n):
        forward(side)
        right(alpha)

polygon(int(length), int(n))

第4、5行,还是通过键盘获得用户输入的多边形边数和编程。

第7行,在定义函数的时候,有两个参数,side代表边长,n代表边的个数。

第8行,计算海龟转过的角度。后面的程序就好理解了。

第13行,调用函数的时候要特别注意:

  • int(length)int(n)是按照位置顺序向函数polygon提供的两个参数,即int(length)对应sideint(n)对应n
  • 并且,同时将用函数input获得到的两个数据转化为了整数类型。

下面图示显示的是执行过程和输出结果。

是不是越来越感受到函数的特点了?

如果把我们已经学习过的循环语句结合起来,还能看到更酷炫的结果。

代码语言:javascript
复制
from turtle import *

shape("turtle")

def polygon(side, n):
    alpha = 360 / n
    for i in range(n):
        forward(side)
        right(alpha)

for side in range(10, 50, 10):
    for n in range(3, 10):
        polygon(side, n)

这段程序的执行时间稍微长一些,小海龟要跑好多圈——多少?能推算出来么?

并且,读者是否可以理解第11行到第13行的代码?结合前面已经学习过的知识。

代码的执行效果如下图所示:

关于代码的理解,留给读者研究了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老齐教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档