Python Turtle绘制七边形顶边水平朝上,如何调整为顶点朝上?
我使用如下Python Turtle代码绘制七边形:
tegan.setheading(0); for i in range (7): tegan.right(51.43) tegan.forward(100)但运行后生成的七边形始终是顶部为水平边的状态,我需要实现顶点朝上的效果,请问代码哪里存在问题?
问题原因
- 代码核心问题是初始朝向设置不符合顶点朝上的绘制要求:
tegan.setheading(0)会将画笔朝向设置为正右方向- 循环内先右转约51.43度(正七边形外角=360/7≈51.4286度)再前进,第一条边会朝右下方绘制,最终整体呈现顶部为水平边的效果
修正方案
要实现顶点朝上的正七边形,只需要给初始朝向补充半个外角的偏移量即可:正n边形要顶点朝上,需要把初始朝向向上偏移 180/n 度,七边形对应偏移约25.71度。
有两种常用修正写法:
写法1:直接计算精准初始角度(推荐)
import turtle tegan = turtle.Turtle() # 90是正北朝向,减去半外角得到正确初始朝向 tegan.setheading(90 - 180/7) for i in range(7): tegan.right(360/7) # 直接用计算式避免手动写近似值的误差 tegan.forward(100) turtle.done()
写法2:在原有代码基础上补充初始偏移
如果不想改动原有循环逻辑,只需要在初始朝向设置后、进入循环前,加一句左转半外角的代码即可:
tegan.setheading(0) tegan.left(180/7) # 补充半外角偏移 for i in range (7): tegan.right(51.43) tegan.forward(100)
补充说明
- 建议外角直接用
360/7计算得到精确值,不要手动写死51.43,避免多次旋转后累计误差导致七边形首尾无法完全闭合 - 两种写法最终都可以得到顶点完全朝上的正七边形效果
内容的提问来源于stack exchange,提问作者Andrew HB
相关产品推荐
相关产品推荐

