import turtle
from math import *# 绘制五角星, 默认为正五角星(一个顶点朝正北方)
# 五角星每个顶角的角度为 180/5 = 36度 或 pi/5
# (x, y): 五角星中心点坐标
# size: 中心到顶点的长度, 即外接圆的半径
# angle 旋转角度, 正五角星正北顶点 turtle.left 方式旋转到被绘制五角星的角度
def draw5star(x=0, y=0, size=100, angle=0, fillcolor='yellow', pencolor='yellow'):turtle.speed(0)turtle.shape('blank')turtle.color(pencolor, fillcolor)turtle.penup()# 定位到中心点正北方顶点(angle为0时的正北方)turtle.goto(x, y)turtle.setheading(90)turtle.left(angle)turtle.forward(size)turtle.right(180 - 36 / 2)turtle.pendown()# 一条直线上的两个顶点的距离distance = 2 * size * cos(pi / 10)# 开始绘制,对于 angle 为 0 的, 从正北方顶点开始turtle.begin_fill()for i in range(5):turtle.forward(distance)turtle.right(144)turtle.end_fill()# 画矩形
# (x,y) 矩形左上角坐标
def drawrectangle(x=0, y=0, height=100, width=100, fillcolor='red', pencolor='black'):turtle.speed(0)turtle.shape('blank')turtle.color(pencolor, fillcolor)turtle.penup()turtle.goto(x, y)turtle.setheading(0)turtle.pensize(2)turtle.pendown()turtle.begin_fill()turtle.forward(width)turtle.right(90)turtle.forward(height)turtle.right(90)turtle.forward(width)turtle.right(90)turtle.forward(height)turtle.end_fill()# 画辅助线,方便判断
# (x,y) 国旗中心点坐标
# mag 国旗放大倍数
def drawsubline(x=0, y=0, mag=1):# 国旗尺寸width = 300 * magheight = 200 * mag# 画中心十字turtle.speed(0)turtle.shape('blank')turtle.pencolor('black')turtle.penup()turtle.goto(x + width / 2, y)turtle.setheading(180)turtle.pensize(2)turtle.pendown()turtle.forward(width)turtle.penup()turtle.goto(x, y - height / 2)turtle.setheading(90)turtle.pendown()turtle.forward(height)# 画小方格的横线for i in range(1, 10):# 横线turtle.penup()turtle.goto(x, y + height / 2 - i * 10 * mag)turtle.setheading(180)turtle.pendown()turtle.forward(width / 2)# 画小方格的竖线for i in range(1, 15):turtle.penup()turtle.goto(x - width / 2 + i * 10 * mag, y)turtle.setheading(90)turtle.pendown()turtle.forward(height / 2)# 计算国旗矩形左上角坐标r_x = x - width / 2r_y = y + height / 2# 画大五角星外接圆,圆绘制起始点为圆最右侧切点turtle.penup()turtle.goto(r_x + 80 * mag, r_y - 50 * mag)turtle.pendown()turtle.circle(30 * mag)# 画4个小五角星外接圆,从上至下 (110, 20), (130, 40), (130, 70), (110, 90)turtle.penup()turtle.goto(r_x + 110 * mag, r_y - 20 * mag)turtle.pendown()turtle.circle(10 * mag)turtle.penup()turtle.goto(r_x + 130 * mag, r_y - 40 * mag)turtle.pendown()turtle.circle(10 * mag)turtle.penup()turtle.goto(r_x + 130 * mag, r_y - 70 * mag)turtle.pendown()turtle.circle(10 * mag)turtle.penup()turtle.goto(r_x + 110 * mag, r_y - 90 * mag)turtle.pendown()turtle.circle(10 * mag)# 画4个小星到大星中心的连线turtle.penup()turtle.goto(r_x + 100 * mag, r_y - 20 * mag)turtle.pendown()turtle.goto(r_x + 50 * mag, r_y - 50 * mag)turtle.penup()turtle.goto(r_x + 120 * mag, r_y - 40 * mag)turtle.pendown()turtle.goto(r_x + 50 * mag, r_y - 50 * mag)turtle.penup()turtle.goto(r_x + 120 * mag, r_y - 70 * mag)turtle.pendown()turtle.goto(r_x + 50 * mag, r_y - 50 * mag)turtle.penup()turtle.goto(r_x + 100 * mag, r_y - 90 * mag)turtle.pendown()turtle.goto(r_x + 50 * mag, r_y - 50 * mag)# 绘制五星红旗
# (x, y) 红旗中心点坐标, 默认为(0,0),即标准模式turtle绘图的中心起点。
# mag: 放大倍数, maganification
def drawflag(x=0, y=0, mag=1):# 国旗尺寸width = 300 * magheight = 200 * mag# 计算国旗矩形左上角坐标r_x = x - width / 2r_y = y + height / 2# 画国旗矩形drawrectangle(x=r_x, y=r_y, height=height, width=width)# 画最大的五角星draw5star(x=r_x + 50 * mag, y=r_y - 50 * mag, size=30 * mag)# draw5star(x=r_x+50*mag, y=r_y-50*mag, size=30*mag)# 从上至下画4颗小五角星, 中心:(100, 20), (120, 40), (120, 70), (100, 90)l_size = 10 * magdraw5star(x=r_x + 100 * mag, y=r_y - 20 * mag, size=l_size, angle=180 - atan(5 / 3) / pi * 180)draw5star(x=r_x + 120 * mag, y=r_y - 40 * mag, size=l_size, angle=180 - atan(7 / 1) / pi * 180)draw5star(x=r_x + 120 * mag, y=r_y - 70 * mag, size=l_size, angle=90 - atan(2 / 7) / pi * 180)draw5star(x=r_x + 100 * mag, y=r_y - 90 * mag, size=l_size, angle=90 - atan(4 / 5) / pi * 180)if __name__ == '__main__':m = eval(input("请输入红旗长度(长比宽为3:2):\n"))mag = m/300n = eval(input("是否要辅助线?(0为不显示辅助线,1为显示辅助线):\n"))if n == 0:drawflag(mag=mag)elif n == 1:drawflag(mag=mag)drawsubline(mag=mag)else:print("输入错误")exit()turtle.done()

python使用turtle画五星红旗!相关推荐

  1. Python使用turtle画五星红旗

    前面我们已经学会画五角星,不妨让我们一起绘制一面五星红旗吧!!! 思路:1.首先需要导包,用Python自带的turtle包,直接导入 2.设置好画布大小 3.绘制五角星时注意每颗星的起始位置,旋转角 ...

  2. 用python 画炫酷的图并讲解-使用Python的turtle画炫酷图形

    原标题:使用Python的turtle画炫酷图形 例子一: import turtle t = turtle.Pen() turtle.bgcolor("black") sides ...

  3. python中用turtle画爱心表白

    python中用turtle画爱心表白 运行后的效果图: 下面的代码是在python3.7写的,代码有点长,但却语法简单易懂 代码如下: import turtle str = input('请输入表 ...

  4. python用turtle画月亮_使用Python的turtle画小猪乔治和哆啦 A 梦

    本人是Python新人小白,欢迎各位大佬指正,本文介绍的是用Python的turtle画一只小猪乔治. 还有本人画画基础超级差= =没天赋,画参考度娘上的一个图片画的. 先上总代码,然后说说我写的思路 ...

  5. python画椭圆turtle_python之turtle画蚊香,python用turtle画圆弧,原理:利用turtl

    python之turtle画蚊香,python用turtle画圆弧,原理:利用turtl 原理:利用turtle绘制圆形,并使圆半径逐步增加 代码如下:import turtleturtle.pens ...

  6. python画小猪乔治动画片全集_使用Python的turtle画小猪乔治和哆啦 A 梦!附源码!...

    本人是Python新人小白,欢迎各位大佬指正,本文介绍的是用Python的turtle画一只小猪乔治. 还有本人画画基础超级差= =没天赋,画参考度娘上的一个图片画的. 先上总代码,然后说说我写的思路 ...

  7. 用Python的turtle画一只小猪乔治【刚学python两天,纪念一下】

    本人是新人小白,欢迎各位大佬指正,本文介绍的是用Python的turtle画一只小猪乔治[手动比心 by zwx lvmm] [女朋友很喜欢小猪乔治,我在学习python,她说,那你会画小猪乔治了吗? ...

  8. 用Python的turtle画出beautiful四扇风车图

    一.简单了解turtle 1.turtle是什么? 这里引用Python官方文档的片段: 海龟绘图 海龟绘图很适合用来引导孩子学习编程. 最初来自于 Wally Feurzeig, Seymour P ...

  9. python之Turtle 画星星和樱花

    python之Turtle 画星星和樱花 1. 樱花 1.1 基础版 1.1.1 基础版效果图 1.1.2 主要算法 1.1.3 完整代码 1.2 升级版 1.2.1 效果图 1.2.2 主要算法 1 ...

最新文章

  1. 关于WeX5的初步学习
  2. 想要彻底搞懂“异地多活”,看完这篇就够了
  3. Mathematica初学者第一讲
  4. android插件框架机制的选择,Android插件开发初探——基础篇
  5. linux ora 00119,ORA-00119和ORA-00132的解决方案
  6. 面向dba的linux shell 脚本简介,面向dba的linuxshell脚本简介.doc
  7. Sublime Text for Mac的快捷键
  8. 孙鑫VC学习笔记:第十一讲 (五) 如何使窗口具有滚动条
  9. python——numpy——roll()函数
  10. U-Net源码上实现自己数据集的分割任务
  11. 截获HTTP/HTTPS请求实现头脑王者辅助
  12. python自动点击按钮_python实现按钮自动点击
  13. EfficientDet:目标识别领域的 EfficientNet
  14. 在计算机网络术语中wan的中文意思是什么,在计算机网络术语中,WAN的中文含义是...
  15. perl(Time::HiRes) is needed mysql5.7
  16. 判断当前时间是否在股票开盘时间,不考虑周六周日和节假日
  17. 使用中国气象局的天气预报webservice
  18. 沧小海深入剖析xilinx的GTP/GTX核,掌握高速串行收发机制——第一章 前言闲谈
  19. 论文汇网站第三期改版完成
  20. 如何编写保护视力的chrome浏览器插件

热门文章

  1. 男人在神永恒国度里的沉思录
  2. 狗狗叫c语言,原来狗狗“呜呜叫”有这些含义,主人:我总算看透它了
  3. DeFi热潮下的安全隐患:流动性危机恐将造成连锁反应 | 非正式会谈
  4. Java怎么弹出cmd命令窗口_怎么在java里打开bat文件,并打开cmd窗口执行,举例一个完整代码。...
  5. 很经典的600句人生至理格言
  6. 多图详解:七种具体方法增强代码可扩展性
  7. staticmethod静态方法有什么作用(含例子运用)
  8. UI设计就业前景广阔无边,入门正当时!
  9. 数据分析之pandas学习笔记(六)(层次化索引、重塑、轴向旋转、行列变换、合并表数据)
  10. 《游戏设计艺术(第2版)》——学习笔记(17)第17章 有种体验叫作故事