乌龟编程精讲版-20

数学的美你知道吗?

今天给大家介绍用数学函数画一些奇异的图案,想用的有正弦函数sine,平方根和求余运算%。

先说一个运算“平方根”——比如求100的平方根就是在求“谁乘以谁=100?”当然是10乘以10了!所以100的平方根是10。25的平方根呢?当然是5了!在Python里当然有求平方根的函数了,它就是math.sqrt()。括号里写你想求的数。

再说“正弦函数”——也就是数学上的sine函数,这个函数的图像是下面这个样子的:像一个水波浪一样是吧?Python里面也有这个函数:math.sin()

再说一个运算:求余数。小学生都应该学过了:9除以2的余数是多少?是1;9除以3的余数是多少?0。相信大家都会。在Python里求余数也叫求模,运算符是%,比如:

10%5=0

10%6=4

好了,我们先写一个最简单的代码如下:

import turtle

import math

bob = turtle.Turtle()

bob.color("red","yellow")

bob.speed(0)

for i in range(200):

bob.forward(math.sqrt(i)*10)

bob.left(170)

这里面我们引入了一个math模块,就像我们一直在用的turtle模块一样,math模块也是python当中的另一个有用的模块,使用方法也一样:先要引入import math,然后才能在后面使用。而我们的乌龟前进的步数是用的平方根bob.forward(math.sqrt(i)*10)。会得到什么图案呢?我们看看!

稍微改动上面的程序代码,我们将bob.left(170)改为bob.left(i%180)。这里面用到了上面说的“求余运算”——想一想,乌龟每次转移的角度不一样了:逐渐增大是不?它画的图变成下面这样了:

让我们把for循环的次数变大点,比如2000:再把前进的10倍去掉只是forward(math.sqrt(i)),for循环部分的代码变成下面这样:

for i in range(2000):

bob.forward(math.sqrt(i))

bob.left(i%180)

图像居然变成很奇怪的样子了:

下面我们再用sine正弦函数试试会出现什么呢?将for循环改成下面这样:

for i in range(1000):

bob.forward(10)

bob.left(math.sin(i/10)*25)

bob.left(20)

数学函数是不是很神奇,稍微改动一下就出现了很多奇怪的图案。你还可以尝试前进(forward)或左转(left)不同的数值和函数试验下,还会有更多很酷的图案呢。比如把上一步的left左转数值变成5,8,30试验下,就变成了下面的样子:

太神奇了!多做试验感受下哦!

学编程、学创造、释放你的想象力

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723G06U2500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券