Python程序设计 实验2:Python基础练习(下)

简介: Python程序设计 实验2:Python基础练习

4. 自定义 Triangle 模块


编写一个模块 Triangle,包含以下三个函数:


isValid(side1, side2, side3): 输入三条边长度,判断是否组成三角形;

perimeter(side1, side2, side3): 输入三条边长度,求三角形周长;

area(side1, side2, side3): 输入三条边长度,求三角形面积。

自行设计主程序验证模块是否编写正确。


(1)大致思路


①isValid(side1, side2, side3)

先判断三边长度是否为大于零的数值,如果假则返回false。再通过对三条边进行两边之和是否大于第三边。如都满足则返回true,否则返回false。

②perimeter(side1, side2, side3)

直接返回三边长度之和即可

③area(side1, side2, side3)

可以通过海伦公式计算面积并返回:


image.png


其中,p为半周长,a,b,c分别为三边长度。


(2)代码实现


Triangle.py:

在模块文件中定义三角形的各个函数。


# 判断能否构成三角形  
def isValid(a, b, c):  
    if a <= 0 or b <= 0 or c <= 0:  
        return False  
    if a+b <= c:  
        return False  
    if a+c <= b:  
        return False  
    if c+b <= a:  
        return False  
    return True  
# 获取周长函数  
def perimeter(a, b, c):  
    return a+b+c  
# 获取面积函数  
def area(a, b, c):  
    # 海伦公式  
    p = (a+b+c)/2  
    return (p*(p-a)*(p-b)*(p-c))**0.5  

主函数:


# 引入自定义三角形模块  
import Triangle  
# 获取输入  
a = eval(input("Please input the first number: "))  
b = eval(input("Please input the second number: "))  
c = eval(input("Please input the third number: "))  
if Triangle.isValid(a, b, c):  
    # 如果是三角形则计算周长和面积  
    print(a, b, c, "can form a triangle")  
    print("The circumference of the triangle is", Triangle.perimeter(a, b, c))  
    print("The area of the triangle is", Triangle.area(a, b, c))  
else:  
    # 输出不能组成三角形的信息  
    print(a, b, c, "cannot form a triangle")  


首先引入三角形模块,获取了三边长度的输入之后对三边长度进行判断,如果不能构成三角形,则给出提示信息。如果能构成三角形则给出提示信息的同时输出三角形的周长和面积。


(3)运行并测试


①如果输入的数据不能构成三角形,则给出提示:


98240286116849dd9e3667cdbd9225d0.png

a00d011af2514ff88564b3196e879b66.png


5. 海龟绘图


自学 Python 自带的 turtle 模块,完成以下两个任务:

1)仔细阅读代码 exp2.5_example.py 并运行,回答以下问题:

A. 运行代码后,你看到了什么?

运行代码后可以看到一个小人发射出爱心的图形:


95e8bd0a603a4a3581f3c6f76ab42e7d.png


B. 解释以下函数的含义:

up(), down(), goto(), circle(), forward(), right(), left(), speed()

①up()

将画笔抬起,移动时不画线


②down()

将画笔落下,移动时画线


③goto()

goto(x, y=None)

其中,x为一个数值或数值对/向量,y为可缺省的一个数值。

如果 y 缺省,x 应为一个表示坐标的数值对或 Vec2D 类对象 (例如 pos() 返回的对象).

此函数将海龟移动到一个绝对坐标。如果画笔已落下将会画线。不改变海龟的朝向。

例如:


tp = turtle.pos()

tp

(0.00,0.00)

turtle. goto (60,30)

turtle.pos()

(60.00,30.00)


④circle()

turtle.circle(radius, extent=None, steps=None)

参数

radius:一个数值,表示半径

extent – 一个可缺省数值表示作图角度

steps – 一个可缺省整型数,表示做多边形边数

绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent则绘制整个圆。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 extent 的值而改变。

圆实际是以其内切正多边形来近似表示的,其边的数量由 steps 指定。如果未指定边数则会自动确定。此方法也可用来绘制正多边形。

a. 若extent和steps都缺省则直接做完整的圆:

import turtle  
turtle.circle(100)  
turtle.done() 

7d53e983a7bb46e2a890eeba54396669.png

b.若steps缺省则做不完整的圆,extend值表示做圆的所对圆心角:


import turtle  
turtle.circle(100,270)  
turtle.done()


d60fe6493a8644bfabf5788c9171ef32.png

c. 若都不缺省,则做以steps为边数的,以extend为角度的多边形

54da7401bf62430283e1f2678656390e.png


⑤forward()

forward(distance)

distanc为一个数值 (整型或浮点型)。表示海龟前进 distance 指定的距离,方向为海龟的朝向。

例如:


turtle.position()
(0.00,0.00)
turtle.forward(25)
turtle.position()
(25.00,0.00)


⑥right()

right(angle) angle为一个数值 (整型或浮点型)

海龟右转angle个单位。

例如:


turtle.heading()
22.0
turtle.right(45)
turtle.heading()
337.0


⑦left()

turtle.left(angle) angle为一个数值 (整型或浮点型)

turtle.heading()
22.0
turtle.left(45)
turtle.heading()
67.0


⑧speed()

speed(speed=None)

参数:speed为一个 0~10 范围内的整型数或速度字符串

如果设置海龟移动的速度为 0~10 表示的整型数值。如未指定参数则返回当前速度。

如果输入数值大于 10 或小于 0.5 则速度设为 0。速度字符串与速度值的对应关系如下:

“fastest”: 0 最快
“fast”: 10 快
“normal”: 6 正常
“slow”: 3 慢
“slowest”: 1 最慢

速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。

例如:


turtle.speed()
3
turtle.speed(‘normal’)
turtle.speed()
6
turtle.speed(9)
turtle.speed()
9


2)用 turtle 模块作出一幅你满意的画。

我们要通过Python自带的turtle包画一个八卦的样子:

①首先定义画笔,并进行填充


import turtle  
turtle.speed(10)  
turtle.pensize(4)  
turtle.color('black', 'black')  
turtle.begin_fill()  


②画出右侧中间的圆


# 右侧中圆  
turtle.circle(50, 180)



③画出左侧大圆


# 左侧大圆  
turtle.circle(100, 180)


④画出左侧中圆


# 左侧中圆  
turtle.left(180)  
turtle.circle(-50, 180)  
turtle.end_fill()  
turtle.color('white', 'white')  
turtle.begin_fill()


⑤画出上面的小圆


# 下小圆  
turtle.left(90)  
turtle.penup()  
turtle.backward(70)  
turtle.pendown()  
turtle.left(90)  
turtle.circle(15)  
turtle.end_fill() 


⑦画出右侧大圆


# 右大圆  
turtle.right(90)  
turtle.up()  
turtle.backward(65)  
turtle.right(90)  
turtle.down()  
turtle.circle(100, 180)  
turtle.done()  


运行并展示最终效果如下


acac5c54cc7846428b930f6b989696ff.png


相关文章
|
1月前
|
算法 数据可视化 Python
使用 Python 模拟蒙特卡洛实验
使用 Python 模拟蒙特卡洛实验
|
2月前
|
机器学习/深度学习 测试技术 数据处理
KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
Kolmogorov-Arnold网络(KAN)作为一种多层感知器(MLP)的替代方案,为深度学习领域带来新可能。尽管初期测试显示KAN在时间序列预测中的表现不佳,近期提出的可逆KAN混合模型(RMoK)显著提升了其性能。RMoK结合了Wav-KAN、JacobiKAN和TaylorKAN等多种专家层,通过门控网络动态选择最适合的专家层,从而灵活应对各种时间序列模式。实验结果显示,RMoK在多个数据集上表现出色,尤其是在长期预测任务中。未来研究将进一步探索RMoK在不同领域的应用潜力及其与其他先进技术的结合。
97 4
|
4月前
|
人工智能 数据挖掘 大数据
爆赞!GitHub首本标星120K的Python程序设计人工智能案例手册
为什么要学习Python? Python简单易学,且提供了丰富的第三方库,可以用较少的代码完成较多的工作,使开发者能够专注于如何解决问题而只花较少的时间去考虑如何编程。此外,Python还具有免费开源、跨平台、面向对象、胶水语言等优点,在系统编程、图形界面开发、科学计算、Web开发、数据分析、人工智能等方面有广泛应用。尤其是在数据分析和人工智能方面,Python已成为最受开发者欢迎的编程语言之一,不仅大量计算机专业人员选择使用Python进行快速开发,许多非计算机专业人员也纷纷选择Python语言来解决专业问题。 由于Python应用广泛,关于Python的参考书目前已经有很多,但将Pytho
|
4月前
|
分布式计算 NoSQL 物联网
麻省理工IOT教授撰写的1058页Python程序设计人工智能实践手册!
Python是世界上最流行的语言之一,也是编程语言中使用人数增长最快的一种。 开发者经常会很快地发现自己喜欢Python。他们会欣赏Python的表达力、可读性、简洁性和交互性,也会喜欢开源软件开发环境,这个开源环境正在为广泛的应用领域提供快速增长的可重用软件基础。 几十年来,一些趋势已经强有力地显现出来。计算机硬件已经迅速变得更快、更便宜、更小;互联网带宽已经迅速变得越来越大,同时也越来越便宜;优质的计算机软件已经变得越来越丰富,并且通过“开源”方式免费或几乎免费;很快,“物联网”将连接数以百亿计的各种可想象的设备。这将导致以快速增长的速度和数量生成大量数据。 在今天的计算技术中,最新的创新
|
4月前
|
Python
Python推导式:小练习
Python推导式:小练习
|
4月前
|
分布式计算 NoSQL 物联网
麻省理工IOT教授撰写的1058页Python程序设计人工智能实践手册!
Python是世界上最流行的语言之一,也是编程语言中使用人数增长最快的一种。 开发者经常会很快地发现自己喜欢Python。他们会欣赏Python的表达力、可读性、简洁性和交互性,也会喜欢开源软件开发环境,这个开源环境正在为广泛的应用领域提供快速增长的可重用软件基础。
|
4月前
|
Python
Python 练习实例35
Python 练习实例35
|
4月前
|
Python
Python 练习实例36
Python 练习实例36
|
4月前
|
机器学习/深度学习 TensorFlow API
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
Keras是一个高层神经网络API,由Python编写,并能够在TensorFlow、Theano或CNTK之上运行。Keras的设计初衷是支持快速实验,能够用最少的代码实现想法,并且能够方便地在CPU和GPU上运行。
|
Java Python
Python基础 | 深浅拷贝问题、递归函数练习
在实际工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题。为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用。为了生成这个副本,就产生了拷贝。下面先了解一下几个概念:对象、可变类型、引用
254 0
Python基础 | 深浅拷贝问题、递归函数练习
下一篇
无影云桌面