Python 用turtle画多个八边形组成的蜘蛛网

此次练习用到了python中的turtle库,以及math库中的pow幂运算和sqrt开方运算。
整体逻辑:
先画出多个同心,逐级变小的八边形;
再画出八条辐射线。
为了保证同心:
每画完一个八边形,都使用goto(0, 0)回到原点位置;
改变画笔起始点,偏移量为半边长加上由边长组成的等腰直角三角形一条腰的长度和。

代码实现:

import turtle
from math import sqrt,pow

# 起始最外层八边形边长
side = 50
# 偏移画布原点(0, 0)的距离,用来改变画笔起始点,保证图形居中
offset = sqrt(pow(side,2)/2)+(side/2)

turtle.pensize(2)
turtle.pencolor('red')
# 改变speed参数(0,10)用来查看画图时的变化,便于调试代码
turtle.speed(10)

# 循环画11个八边形
for n in range(11):
# 抬起画笔后改变画笔起始点和行进方向
	turtle.penup()
	turtle.forward(offset)
	turtle.left(90)
	turtle.pendown()
# 起始点为八边形边的一半处,行进一半就到了第一个顶点位置
	turtle.forward(side/2)
# 循环画8条边
	for i in range(8):
		turtle.left(45)
		turtle.forward(side)
# 每次画完1个八边形后恢复到原点和行进方向
	turtle.penup()
	turtle.goto(0,0)
	turtle.right(90)
	turtle.pendown()
# 每次画完1个八边形,都改变边长和偏移量,逐级减小
	side -=4
	offset = sqrt(pow(side,2)/2)+(side/2)
	
# 循环画8条辐射线
turtle.pencolor('green')
turtle.left(22.5)
for j in range(8):
	turtle.left(45)
	turtle.forward(100)
# 不改变方向后退到起点
	turtle.backward(100)

# 隐藏画笔并结束
turtle.hideturtle()	
turtle.done()

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值