项目导入–绘制五角星V_1.0
版本V1.0 :用turtle库在Python中绘制五角星
项目分析—理清思路
-
引入图形绘制的turtle库(import turtle)
-
利用turtle库中的函数实现五角星的绘制
知识点学习–万丈高楼平地起
Turtle库绘图坐标体系
上机编程–动动手,让程序运行起来
参照代码
"""
作者:白菜胡萝丸子
版本1.0:使用turtle库在python中绘制五角星
"""
import turtle
def main():
turtle.speed(1)
# 绘制五角星的第一条边
turtle.forward(100)
turtle.right(144)
# 绘制五角星的第二条边
turtle.forward(100)
turtle.right(144)
# 绘制五角星的第三条边
turtle.forward(100)
turtle.right(144)
# 绘制五角星的第四条边
turtle.forward(100)
turtle.right(144)
# 绘制五角星的第五条边
turtle.forward(100)
turtle.right(144)
turtle.exitonclick()
if __name__ == "__main__":
main()
执行结果
更上一层楼–让程序进化一点点
- 在V1.0版本绘制五角星的程序中你发现了什么问题?是不是又很多重复的代码,请尝试利用循环结构使代码更加简约
项目导入–绘制五角星V_2.0
版本2.0:观察V1.0版本的程序代码,是否能用while循环使版本1.0更加简洁
项目分析—理清思路
知识点学习–万丈高楼平地起
循环语句
- 控制程序的语句
- 判断程序确定一段程序是否再次执行一次或者多次
- 使用方法
while(<条件>):
<语句块1>
<语句块2>
- 当条件为真(True)时,执行语句块1,当语句为假(Flase),退出循环
上机编程–动动手,让程序运行起来
参照代码
"""
作者:白菜胡萝丸子
版本2.0:观察V1.0版本的程序代码,是否能用while循环使版本1.0更加简介
"""
import turtle
def main():
# 设置画笔绘制速度
turtle.speed(2)
# 设置循环的判断条件
i = 0
# 绘制五角星的循环语句
while i < 5:
turtle.forward(100)
turtle.right(144)
i = i + 1
# 设置点击关闭窗口
turtle.exitonclick()
if __name__ == "__main__":
main()
执行结果
更上一层楼–让程序进化一点点
项目导入–绘制五角星V_3.0
版本3.0:将五角星的绘制封装到函数里,进而使程序更加模块化
项目分析—理清思路
知识点学习–万丈高楼平地起
函数的调用过程
-
调用程序再调用函数处暂停执行
-
调用时将参数(实参)赋值给参数(形参)
-
执行函数体
-
返回执行结果,回到调用处继续执行
上机编程–动动手,让程序运行起来
参照代码
"""
作者:白菜胡萝丸子
版本3.0:将五角星的绘制封装到函数里,进而使程序更加模块化
"""
import turtle
def pentagram(side_length):
i = 0
while i < 5:
turtle.forward(side_length)
turtle.right(144)
i = i + 1
def main():
turtle.speed(10)
side = 100
pentagram(side)
turtle.exitonclick()
if __name__ == "__main__":
main()
执行结果
更上一层楼–让程序进化一点点
项目导入–绘制五角星V_4.0
版本4.0:绘制不同大小的重复五角星,设置五角星边的颜色和填充颜色
项目分析—理清思路
知识点学习–万丈高楼平地起
画笔控制函数
- turtle.penup()
抬起画笔,滞后移动画笔不会绘制图形 - turtle.pendown()
落下画笔,滞后移动,画笔绘制图形 - turtle.pensize()
设置画笔宽度 - turtle.pencolor()
设置画笔颜色 - turtle.pencolormode(255)
设置RGB色彩模式 turtle.color(255,255,255) - turtle.fillcolor(), turtle.begin_fill(), turtle.end_fill()
填充颜色
上机编程–动动手,让程序运行起来
参照代码
"""
作者:白菜胡萝丸子
版本V4.0:绘制不同大小的重复的五角星,设置五角星的颜色,填充颜色,画笔的粗细
"""
import turtle
# 设置绘制五角星的函数
def pentagram(side_length):
i = 1
while i <= 5:
turtle.forward(side_length)
turtle.right(144)
i = i + 1
# 设置主函数
def main():
# 设置初始五角星的边长和速度
size = 100
# 设置五角星绘制的速度
turtle.speed(2)
# 设置绘制的颜色
turtle.colormode(255)
turtle.pencolor((255 , 0 , 0))
# 设置绘制画笔的粗细
turtle.pensize(2)
# 设置移动画笔的初始位置
turtle.penup()
turtle.backward(100)
turtle.pendown()
# 设置填充的颜色
turtle.fillcolor('red')
# 绘制重复五角星
while size <= 250:
turtle.begin_fill()
pentagram(size)
turtle.end_fill()
size = size + 50
# 点击关闭窗口
turtle.exitonclick()
# 调用主函数
if __name__ == '__main__':
main()
执行结果
更上一层楼–让程序进化一点点
如果想要程序更加灵活,即实现用户决定重复绘制几次五角星以及五角星的大小,该如何改造代码?
项目导入–绘制五角星V_5.0
版本V5.0:实现用户决定重复绘制五角星的次数,五角星的大小,填充颜色等
项目分析—理清思路
知识点学习–万丈高楼平地起
知识点复习
- input函数
- while循环
- 函数的定义与调用
上机编程–动动手,让程序运行起来
参照代码
"""
作者:白菜胡萝丸子
版本V5.0:实现用户决定重复绘制五角星的次数,五角星的大小,填充颜色等
"""
import turtle
# 设置绘制五角星的函数
def pentagram(side_length):
i = 1
while i <= 5:
turtle.forward(side_length)
turtle.right(144)
i = i + 1
# 设置主函数
def main():
# 用户输入五角星的初始边长,重复次数,每重复一次增加的长度
side_length = float(input('您好,请您输入重复五角星的初始边长'))
num = float(input('您好,请您输入准备重复绘制五角星的次数'))
add_side_length = float(input('您好,请您输入每次重复绘制五角星增加的长度:'))
side_color = input('您好,请您输入绘制五角星的边长颜色:')
# 设置五角星的颜色
turtle.pencolor(side_color)
# 设置循环控制变量
order = 1
while order <= num:
pentagram(side_length)
side_length = side_length + add_side_length
order = order + 1
# 点击关闭窗口
turtle.exitonclick()
# 调用主函数
if __name__ == '__main__':
main()
执行结果
更上一层楼–让程序进化一点点
项目导入–绘制五角星V_6.0
版本6.0:使用递归函数实现重复五角星的绘制
项目分析—理清思路
知识点学习–万丈高楼平地起
def digui (num) #定义递归函数
print(num) #输出当前教字
if num>0: #判断当前数字是否>0
digui(nun-1) #调用函数本身
else:
print('----')
print (num) #再次输出当前数字
digui(3)
#运行过程
digui (3)
print (3)
if 3>0:
digui (2): #调用函数本身
print(2)
if 2>0
digui(1) #调用函数木身
print (1)
if 1>0
digui (0): #调用函数本身
print (0)
if 0>0:
digui(num-1) #调用函数本身
else :
print ('---')
print (0)
print(1)
print (2)
print (3)
上机编程–动动手,让程序运行起来
参照代码
"""
作者:白菜胡萝丸子
版本6.0:使用递归函数实现重复五角星的绘制
"""
import turtle
def pentagram(side_length):
i = 0
while i < 5:
turtle.forward(side_length)
turtle.right(144)
i = i + 1
side_length = side_length + 100
if side_length <= 500:
pentagram(side_length)
def main():
turtle.speed(10)
side = 100
pentagram(side)
turtle.exitonclick()
if __name__ == "__main__":
main()
执行结果
更上一层楼–让程序进化一点点
项目导入–绘制五角星V_7.0
版本7.0:使用tkinter库的canvas控件绘制五角星
项目分析—理清思路
引入tkinter
按照绘图步骤进行图形绘制
使用tkinter库中的Canvas控件进行绘图
注:Python提供了多个图形界面开发的库,tkinter是其中的一个,引入tkinter库以后可以快速的创建GUI ( Graphic User Interface)应用程序。
知识点学习–万丈高楼平地起
上机编程–动动手,让程序运行起来
参照代码
""""
作者:白菜胡萝丸子
版本7.0:使用tkinter库的canvas控件绘制五角星
"""
import tkinter
import math
top = tkinter.Tk()
top.title("绘制五角星")
c = tkinter.Canvas(top, bg="pink", height="300", width="300")
# 使用canvas控件绘制五角星
r = 150
center_x = 150
center_y = 150
polygon = c.create_polygon(
# 左上点
center_x - (r*math.sin(2 * math.pi / 5)),
center_y - (r*math.cos(2 * math.pi / 5)),
# 右上点
center_x + (r*math.sin(2 * math.pi / 5)),
center_y - (r*math.cos(2 * math.pi / 5)),
# 左下点
center_x - (r*math.sin(math.pi / 5)),
center_y + (r*math.cos(math.pi / 5)),
# 顶点
center_x,
center_y - r,
# 右下点
center_x + (r*math.sin(math.pi / 5)),
center_y + (r*math.cos(math.pi / 5)),
fill="red"
)
# 消息主循环
c.pack()
top.mainloop()