编程语言应用

首页 » 常识 » 常识 » 青少年Python编程系列30Pytho
TUhjnbcbe - 2023/2/28 18:33:00

上节课我们讲了Python中的内置函数。除了内置函数外,还有很多非常有用的函数都放在一些内置标准库中,我们需要引入这些库后才可以使用,这里我们挑一些非常常用的内置库给大家讲解。我们正式进入这节课的内容吧。

一、math库

从math库的名字,我们就可以看出来这里面的函数都是跟数学计算相关的函数。很多时候我们做一些计算的时候需要引入math库。考虑到部分函数超出小学和初中阶段知识的范围,我这里做一些简单的讲解。

1.1math库中的常量

在math库中定义了几个数学上的常量,分别是math.pi、math.、math.inf、math.nan。我们分别介绍一下这几个常量。

math.pi就是圆周率,数学上写作π,在数学课上老师让大家记忆π≈3.14,在Python中它的精度高一些,取值为3.

importmathmath.pi3.

math.是自然对数,对数的概念在高中数学上会讲到,这里做一个了解。在数学上写作,≈2.。在Python中取值为2.281828459

importmathmath.2.281828459

math.inf是无穷大,无穷大的概念在大学高等数学里面会讲到,数学上写做∞,它不是一个我们正常看到的数字。math.nan代表非合法浮点数,也是一个抽象的数。这两个常量仅仅做一个了解,它们的类型都是浮点数。

importmathmath.infinftyp(math.inf)classfloatmath.nannantyp(math.nan)classfloat

1.2floor()函数和cil()函数

floor()函数和cil()函数分别对应我们数学上学到的取近似值的“去尾法”和“进一法”,参数为一个浮点数,返回值为一个整数。

importmathmath.floor(3.8)3math.floor(3.2)3math.cil(3.8)4math.cil(3.2)4

在解决实际问题时,我们经常需要用到“去尾法”和“进一法”。比如说船的荷载重量÷体重=限载人数,我们需要去尾;水果数量÷每筐放的水果数量=需要筐子的数量,我们需要进一。

1.3sqrt()函数

sqrt()函数可以计算一个数的平方根,平方根是初中数学的知识。如果小学阶段接触到这个知识,可以理解为已知一个正方形的面积,求正方形的边长。比如,面积为9㎡的正方形,边长是3m;面积为3㎡的正方形,边长≈1.m。

我们看具体的使用:

importmathmath.sqrt(4)2.0math.sqrt(2)1.

1.4radians()函数和dgs()函数

了解这两个函数之前,我们先要了解一下弧度的概念。在小学和初中阶段,一个角的大小我们都是使用角度表示的。一周是°,一条直线是°,直角是90°……角的大小还有另一种单位,叫做弧度。在弧度制中,一周是2π,一条直线是π,直角是π/2。radians()函数时将角度转换为弧度、dgs()函数是将弧度转换为角度。

我们看具体的使用:

importmathmath.radians(90)1.math.radians()3.math.dgs(math.pi).0math.dgs(math.pi/2)90.0

1.5sin()函数、cos()函数和tan()函数

这三个函数分别叫正弦、余弦、正切,都是三角函数。初中的同学在数学课可能已经学过这个函数,没学过的不要紧,这里做一个简单的介绍。

一个直角三角形,一个角的大小相同的情况下,三条边之间的比值也是固定的。与角相对的直角边称为对边、与角相邻的直角边称为邻边、与直角相对的边称为斜边

sin()-正弦:对边与斜边长度的比值

cos()-余弦:邻边与斜边长度的比值

tan()-正切:对边与邻边长度的比值

这三个函数的使用非常简单,但是要注意,参数是角的弧度值,不是角度值。如果我们知道的是角度,还要使用radians()函数做转换。

importmathmath.sin(math.radians(30))0.math.cos(math.radians(30))0.math.tan(math.radians(30))0.

这三个函数在有数学基础,并且熟练掌握turtl画图的情况下,可以画出很多复杂漂亮的图形。

math库中除了以上函数外,还有pow()函数与内置函数pow()完全相同,fabs()函数可以计算绝对值,与内置函数abs()的区别在于math库中的fabs()的返回值永远为浮点数。其他关于求阶乘、最小公约数、最大公倍数等等函数使用较少这里不做讲解了,有兴趣的同学可以自己查看官方文档。还有求对数、自然对数等等超出初中阶段数学知识太多,这里也不做讲解了。

二、random库

random库是一个用于生成随机数的内置库,当我们程序中需要使用到随机取一个数的值的时候,我们就需要用到这个库。随机数有很多种不同的取法,分别使用不同的函数来实现。这里面我们来做一个介绍。

2.1random()函数

random()函数可以生成一个0.0到1.0之间的随机小数。我们看一下它的使用:

importrandomasrr.random()0.r.random()0.

每次使用得到的随机数都不一样。

2.2randint()函数

randint()函数可以生成一个区间在a和b两个数之间的随机整数。函数需要给两个参数,开始值和结束值。随机数的取值范围包含开始值和结束值。我们看它的使用方法:

importrandomasrr.randint(1,10)5r.randint(1,10)5r.randint(1,10)4r.randint(1,10)7

2.3randrang()函数

randrang()函数可以在a和b之间以一定步长取随机整数。函数必须给两个参数,起始值和结束值,第三个参数步长为可选参数,默认值为1。随机数的取值范围包含开始值不包含结束值。我们看它的用法:

importrandomrandom.randrang(0,,10)20random.randrang(0,,10)70random.randrang(0,,10)40

2.4uniform()函数

uniform()函数可以生成在区间a和b之间的随机浮点数。函数需要给定两个参数,起始值和结束值。随机数的取值范围包含开始值和结束值。我们看它的使用方法:

importrandomrandom.uniform(1,)63.29831379003random.uniform(1,)47.39random.uniform(1,)49.68

2.5choic()函数

choic()函数可以从序列中随机选取元素。函数的参数为一个可迭代对象。我们看它的用法:

importrandoma=[2,3,4,5,6,7,8]random.choic(a)2random.choic(a)7random.choic(a)3

2.6shuffl()函数

shuffl()函数可以将序列进行随机打乱次序。函数的参数为一个列表。我们看它的用法:

importrandoma=[2,3,4,5,6,7,8]random.shuffl(a)print(a)[2,7,3,4,8,6,5]random.shuffl(a)print(a)[7,6,3,4,5,8,2]

2.7sd()函数

sd()函数可以生成一个随机数的种子,我们生成随机数可以不生成种子,系统会自动以系统时间作为种子。如果我们指定了随机数种子,种子相同的情况下生成的随机数也相同。我们看具体的例子:

importrandomrandom.sd(1)#种子为1random.random()0.random.sd(2)#种子为2random.random()0.956034289random.sd(1)#种子为1random.random()0.

从上面的代码中我们可以看出,当种子相同时,生成的随机数也是相同的。

三、综合应用实例

刚刚讲了这么多,我们结合随机库、海龟画图和函数递归调用,可以画出非常漂亮的画。而且程序每次运行后画出来的画都不一样哦!我们来看一下樱花树的例子:

importrandomimportturtl__Pn=turtl.Pn()#“画树”函数#参数分别是树枝长度、画笔dft(branchLn,t):if(branchLn3):if(8=branchLnandbranchLn=12):if(random.randint(0,2)==0):t.pncolor(snow)ls:t.pncolor(lightcoral)t.pnsiz((branchLn/3))lif(branchLn8):if(random.randint(0,1)==0):t.pncolor(snow)ls:t.pncolor(lightcoral)t.pnsiz((branchLn/2))ls:t.pncolor(sinna)t.pnsiz((branchLn/10))t.forward(branchLn)a=(1.5*(random.random()))t.right((20*a))b=(1.5*(random.random()))t(branchLn-10*b,t)t.lft((40*a))t(branchLn-10*b,t)t.right((20*a))t.pnup()t.backward(branchLn)t.pndown()#绘制树下花瓣,参数分别是画板数、画笔dfptal(m,t):foriinrang(m):a=(-*(random.random()))b=(10-20*(random.random()))t.pnup()t.forward(b)t.lft(90)t.forward(a)t.pndown()t.pncolor(lightcoral)t.circl(1)t.pnup()t.backward(a)t.right(90)t.backward(b)dfmain():t=turtl.Pn()__Pn.hidturtl()t.spd(0)turtl.bgcolor(what)t.lft(90)t.pnup()t.backward()t.pndown()t.pncolor(sinna)t(60,t)ptal(,t)turtl.don()main()

四、课后思考题

1、编程题

编写一个猜数字的游戏。程序随机生成一个1到之间的整数。用户输入一个整数,根据用户输入输入的数字并提示“猜大了”或者“猜小了”。用户输入正确答案时提示“恭喜你猜对了”,程序运行结束。

2、编程题

使用海龟画图在屏幕的任意位置画五角星,五角星的个数为20个。五角星每条边的长度为30到80之间的随机数;五角星的线条颜色为红色(d)、绿色(gn)、*色(yllow)、紫色(violt)、蓝色(blu)、紫罗兰(purpl)、麦*色(what)、橙色(orang)中的随机一种颜色。

五、上节课思考题答案

1、C

2、错(返回值类型是元组,不是列表)

3、参考代码:

dftransit(licns):last=licns[-1]turn(last!=1andlast!=6)licnss=[省A,省A,省A,省A,省A,省A]trans=list(filtr(transit,licnss))print(trans)

4、参考代码:

dfdoubl(n):turn2*ns=list(map(int,input().split()))ds=list(map(doubl,s))print(ds)

1
查看完整版本: 青少年Python编程系列30Pytho