python - python中的嵌套三角形与乌龟
问题描述
我的目标是生成一组嵌套三角形的简单图形表示,如图 1 所示。输出应包含 4 个等边三角形(等边,内角为 60 度)。三角形的边长应分别为 20、40、60 和 80。在相邻三角形的底部水平线之间使用 7 的距离。
我在这里看到过一篇关于此的帖子,但答案太复杂了,正如您从我的代码中看到的那样,这是我的第一个程序之一。
from turtle import *
number_of_shapes = 2
for shape in range(1, number_of_shapes + 1):
# Draw A Triangle
for sides in range(1, 4):
forward(10 + shape * 10 )
left(120)
right(90)
forward(7 + shape)
我的问题是:我如何简单地将我的三角形相互对齐?
解决方案
如果没有承诺的插图,我将假设您正在尝试绘制嵌套三角形。从角落开始会变得更加困难,所以我建议你重新排列代码,从三角形底部的中间开始,然后从那里开始绘制。这需要分两步绘制底部,但如果我们从中心开始,调整位置会更容易:
from turtle import *
number_of_shapes = 4
for shape in range(1, number_of_shapes + 1):
# Draw A Triangle
forward(shape * 10)
for _ in range(2):
left(120)
forward(shape * 20)
left(120)
forward(shape * 10)
right(90)
penup()
forward(7)
pendown()
left(90)
done()
虽然间距并不完美,因为底部应该接近 6px,而不是指定的 7px。但是我们可以完全消除这种计算,并通过使用冲压代替绘图来大大简化代码:
from turtle import *
number_of_shapes = 4
shape('triangle')
fillcolor('white')
right(30)
for size in range(number_of_shapes, 0, -1):
shapesize(size)
stamp()
done()
使用冲压,我们从三角形的中心而不是它的边缘工作。由于默认光标大小为 20,因此调整大小是免费的。
推荐阅读
- python-3.x - python asyncio http服务器中的请求大小限制
- amazon-web-services - 如何使用 s3 和 cloudflare 设置子域?
- airflow-scheduler - Airflow Bashoperator SSH commnad 的工作原理
- pandas - 使用 pandas 查询方法搜索日期时间对象
- ruby - 如何使用 ruby on rails 声明一个动态数组
- ios - iOS 目标 c 中的 NFC 标签阅读器错误消息“不支持功能”
- ios - AVCaptureMultiCamSession 前后图像 iOS
- tailwind-css - Tailwind CSS:有没有办法定位下一个兄弟姐妹?
- c++ - 如何在 C++ 中读取 EDB 文件
- java - 通过 DWA 从 DOORS 导出 ReqIF