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:函数篇(每周练习)
79 1
|
2月前
|
机器学习/深度学习 人工智能 算法
【Python】编程练习的解密与实战(一)
【Python】编程练习的解密与实战(一)
37 0
|
3天前
|
索引 Python
python 格式化、set类型和class类基础知识练习(上)
python 格式化、set类型和class类基础知识练习
23 0
|
12天前
|
安全 数据安全/隐私保护 Python
292: 程序设计C 实验五 题目三 设计密码(python)
292: 程序设计C 实验五 题目三 设计密码(python)
|
2月前
|
Python
Python猜字游戏是一种常见的编程练习
Python猜字游戏是一种常见的编程练习
24 2
|
2月前
|
机器学习/深度学习 人工智能 算法
【Python】编程练习的解密与实战(四)
【Python】编程练习的解密与实战(四)
38 0
|
2月前
|
机器学习/深度学习 人工智能 算法
【Python】编程练习的解密与实战(二)
【Python】编程练习的解密与实战(二)
50 0
|
Java Python
Python基础 | 深浅拷贝问题、递归函数练习
在实际工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题。为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用。为了生成这个副本,就产生了拷贝。下面先了解一下几个概念:对象、可变类型、引用
212 0
Python基础 | 深浅拷贝问题、递归函数练习
|
Python
python——基础练习(五)
python——基础练习(五)
107 0
python——基础练习(五)
|
Python
python——基础练习(四)
python——基础练习(四)
117 0
python——基础练习(四)