(课程相关的所有资料代码,已上传至CSDN,请自行下载
https://download.csdn.net/download/qq_34243930/10764180 )
• 案例描述
• 案例分析
• 上机实验
• turtle库
注意:调用turtle.exitonclick图形窗口才会停在那里!!!
向右转60度是直走方向的右手边右转60度!
"""
作者:xpt
功能:五角星(pentagram)的绘制
版本号:1.0
日期:08/11/2018
"""
import turtle
def main():
"""
主函数
"""
# 第1条边
turtle.forward(100)
# 第2条边
turtle.right(144)
turtle.forward(100)
# 第3条边
turtle.right(144)
turtle.forward(100)
# 第4条边
turtle.right(144)
turtle.forward(100)
# 第5条边
turtle.right(144)
turtle.forward(100)
turtle.exitonclick()
if __name__ == '__main__':
main()
"""
作者:xpt
功能:五角星(pentagram)的绘制
版本号:1.0
日期:08/11/2018
"""
import turtle
def main():
"""
主函数
"""
# 计数器
count = 1
while count <= 5:
turtle.forward(100)
turtle.right(144)
count = count+1
turtle.exitonclick()
if __name__ == '__main__':
main()
关于代码,我一开始犯错误了,我没有吧count放进循环里!初始条件都没放进循环里,真是欠打!
代码1:
"""
作者:xpt
功能:五角星(pentagram)的绘制
版本号:2.0
日期:11/11/2018
新增功能:加入循环操作绘制重复不同大小的图形
"""
import turtle
def main():
"""
主函数
"""
size = 50
while size <= 100:
# 计数器
count = 1
while count <= 5:
turtle.forward(size)
turtle.right(144)
count = count+1
size = size + 10
turtle.exitonclick()
if __name__ == '__main__':
main()
**代码2:**封装进函数使程序更简洁
"""
作者:xpt
功能:五角星(pentagram)的绘制
版本号:2.0
日期:11/11/2018
新增功能:加入循环操作绘制重复不同大小的图形
"""
import turtle
def draw_pentagram(size):
"""
绘制五角星
"""
# 计数器
count = 1
while count <= 5:
turtle.forward(size)
turtle.right(144)
count = count + 1
def main():
"""
主函数
"""
size = 50
while size <= 100:
# 调用函数
draw_pentagram(size)
size = size + 10
turtle.exitonclick()
if __name__ == '__main__':
main()
详细API请参考:https://docs.python.org/3.0/library/turtle.html
注意! 颜色传进去的是字符串
注意!设置语句写在主函数main里
"""
作者:xpt
功能:五角星(pentagram)的绘制
版本号:2.0
日期:11/11/2018
新增功能:加入循环操作绘制重复不同大小的图形
"""
import turtle
def draw_pentagram(size):
"""
绘制五角星
"""
# 计数器
count = 1
while count <= 5:
turtle.forward(size)
turtle.right(144)
count = count + 1
def main():
"""
主函数
"""
# 抬笔
turtle.penup()
# 笔往左移动300像素
turtle.backward(300)
# 落笔
turtle.pendown()
# 更改宽度
turtle.pensize(2)
# 更改颜色
turtle.pencolor('red')
size = 50
while size <= 100:
# 调用函数
draw_pentagram(size)
size = size + 10
turtle.exitonclick()
if __name__ == '__main__':
main()
• 能否将循环和函数整合在一个函数中?
要注意终止条件的构建,否则递归无法正常返回结果
又犯错误了我,我一开始没加终止条件 if size <= 100:,结果它一直在画五角星
"""
作者:xpt
功能:五角星(pentagram)的绘制
版本号:3.0
日期:11/11/2018
新增功能:加入循环操作绘制重复不同大小的图形
新增功能:函数与循环的结合(递归函数)
"""
import turtle
def draw_recursive_pentagram(size):
"""
迭代绘制五角星
"""
# 计数器
count = 1
while count <= 5:
turtle.forward(size)
turtle.right(144)
count = count + 1
# 五角星绘制完成,更新参数
size += 10
if size <= 100:
draw_recursive_pentagram(size)
def main():
"""
主函数
"""
# 抬笔
turtle.penup()
# 笔往左移动300像素
turtle.backward(300)
# 落笔
turtle.pendown()
# 更改宽度
turtle.pensize(2)
# 更改颜色
turtle.pencolor('red')
size = 50
# 调用函数
draw_recursive_pentagram(size)
turtle.exitonclick()
if __name__ == '__main__':
main()
编写递归函数必备两条因素为:重复单元、停止条件
(开始条件、参数不是必备因素)
• 利用递归函数绘制分形树?
• 案例描述
• 案例分析
• 分形树绘制分析
一定要单步调试感受一下过程!!很重要
"""
作者:xpt
功能:利用递归函数绘制分形树
版本号:1.0
日期:12/11/2018
"""
import turtle
def draw_branch(branch_length):
"""
绘制分形树
"""
if branch_length > 5:
# 起始树干
turtle.forward(branch_length)
# 绘制右侧树枝
turtle.right(20)
draw_branch(branch_length-15)
# 绘制左侧树枝
turtle.left(40)
draw_branch(branch_length - 15)
# 返回树枝节点
turtle.right(20)
turtle.backward(branch_length)
def main():
"""
主函数
"""
turtle.left(90)
# 调用函数
draw_branch(40)
turtle.exitonclick()
if __name__ == '__main__':
main()
加入print语句,来帮助你理解程序过程
"""
作者:xpt
功能:利用递归函数绘制分形树+输出语句理解程序
版本号:2.0
日期:12/11/2018
"""
import turtle
def draw_branch(branch_length):
"""
绘制分形树
"""
if branch_length > 5:
# 起始树干
turtle.forward(branch_length)
print('向前',branch_length)
# 绘制右侧树枝
turtle.right(20)
print('右转20度')
draw_branch(branch_length-15)
# 绘制左侧树枝
turtle.left(40)
print('左转40度')
draw_branch(branch_length - 15)
# 返回树枝节点
turtle.right(20)
print('右转20度')
turtle.backward(branch_length)
print('向后', branch_length)
def main():
"""
主函数
"""
turtle.left(90)
# 调用函数
draw_branch(40)
turtle.exitonclick()
if __name__ == '__main__':
main()
起始设置为100
分形树变很大,超出了窗体能见范围
修改:把开始落笔处往下移
"""
作者:xpt
功能:利用递归函数绘制分形树+输出语句理解程序+改变落笔定位
版本号:3.0
日期:12/11/2018
"""
import turtle
def draw_branch(branch_length):
"""
绘制分形树
"""
if branch_length > 5:
# 起始树干
turtle.forward(branch_length)
print('向前',branch_length)
# 绘制右侧树枝
turtle.right(20)
print('右转20度')
draw_branch(branch_length-15)
# 绘制左侧树枝
turtle.left(40)
print('左转40度')
draw_branch(branch_length - 15)
# 返回树枝节点
turtle.right(20)
print('右转20度')
turtle.backward(branch_length)
print('向后', branch_length)
def main():
"""
主函数
"""
turtle.left(90)
turtle.penup()
turtle.backward(100)
turtle.pendown()
# 调用函数
draw_branch(100)
turtle.exitonclick()
if __name__ == '__main__':
main()