用 Python + turtle 模块绘制五星红旗
用 Python 绘制五星红旗
在这个代码示例中,我将介绍如何使用 Python 的 turtle 模块绘制五星红旗。turtle 模块是一个图形库,可以轻松地在 Python 中实现简单的绘图功能。
导入模块
首先,我们需要导入 turtle 模块和 math 模块,以便能够使用数学函数来计算五角星的边长、比例尺等参数。
import turtle
import math
创建画布和画笔对象
接下来,我们创建一个画笔对象,并设置画布大小、标题和背景颜色等属性。
t = turtle.Pen()
canvas_width = 1000
canvas_height = 700
t.speed(6)
screen = turtle.Screen()
screen.title('祖国万岁')
screen.setup(canvas_width, canvas_height)
screen.bgcolor('red')
在上述代码中,我们使用 turtle.Pen() 函数创建一个名为 t 的画笔对象,并设置其绘图速度为 6。然后,我们创建一个 Screen 对象,并设置其标题和背景颜色等属性。最后,我们使用 setup() 函数设置画布的宽度和高度。
定义函数
在本示例中,我们定义了三个函数:
side_length(diameter):该函数用于根据五角星直径计算出五角星的边长。scale(diameter):该函数用于计算比例尺,以便在画布上绘制五角星。star(diameter, angle):该函数用于绘制一个五角星。
我们可以使用这些函数来计算五角星的相关参数,并绘制五角星。
绘制五角星
接下来,我们定义一个名为 national_flag() 的函数来绘制五角星红旗。该函数接受四个参数:
x:大五角星的直径。y:大五角星距离画布顶端的距离。z:小五角星的直径。h:小五角星与 x 轴正半轴之间的夹角。
函数内部通过调用 star() 函数来绘制五角星。最后,我们使用 national_flag() 函数来绘制五星红旗的所有五角星。
def national_flag(x, y, z, h):
# 将画笔移动到指定位置并绘制五角星
t.up()
t.goto(-scale(x), scale(y))
t.down()
t.pencolor('yellow') # 将画笔颜色设置为黄色
star(z, h)
# 绘制五星红旗
national_flag(10, 5, 6, 180 - 18) # 绘制大五角星
national_flag(5, 8, 2, spin(3, 5) + 180) # 绘制第一颗小五角星
national_flag(3, 6, 2, spin(1, 7) + 180) # 绘制第二颗小五角星
national_flag(3, 3, 2, 180 - spin(2, 7)) # 绘制第三颗小五角星
national_flag(5, 1, 2, 180 - spin(4, 5)) # 绘制第四颗小五角星
完成绘制
最后,我们使用 hideturtle() 函数隐藏画笔,并使用 turtle.done() 函数等待用户关闭窗口,即可完成五星红旗的绘制。
t.hideturtle() # 隐藏画笔,完成绘制
turtle.done() # 等待用户关闭窗口
完整代码
# 导入 turtle 模块和 math 模块
import turtle
import math
# 创建画笔对象并设置绘图速度、画布大小、窗口标题和背景颜色等
t = turtle.Pen()
canvas_width = 1000
canvas_height = 700
t.speed(6)
screen = turtle.Screen()
screen.title('祖国万岁')
screen.setup(canvas_width, canvas_height)
screen.bgcolor('red')
# 计算五角星边长和比例尺的函数
def side_length(diameter):
return math.sin(math.radians(72)) * diameter * 30
def scale(diameter): # 计算比例尺的函数
return canvas_width / 30 * diameter
# 绘制五角星的函数
def star(diameter, angle):
# 将画笔移动到五角星顶点处,并转向指定角度
t.setheading(angle)
t.forward(scale(diameter) / 2)
t.setheading(angle - 180)
t.left(18)
# 开始填充黄色并绘制五角星轮廓
t.begin_fill()
t.fillcolor('yellow') # 将填充颜色设置为黄色
t.pencolor('yellow') # 将线条颜色设置为黄色
for i in range(5):
t.forward(side_length(diameter))
t.right(144)
t.end_fill()
# 计算直线与 x 轴正半轴之间夹角的函数
def spin(x, y):
return math.degrees(math.atan2(x, y))
# 绘制五角星的函数
def national_flag(x, y, z, h):
# 将画笔移动到指定位置并绘制五角星
t.up()
t.goto(-scale(x), scale(y))
t.down()
t.pencolor('yellow') # 将画笔颜色设置为黄色
star(z, h)
# 绘制五星红旗
national_flag(10, 5, 6, 180 - 18) # 绘制大五角星
national_flag(5, 8, 2, spin(3, 5) + 180) # 绘制第一颗小五角星
national_flag(3, 6, 2, spin(1, 7) + 180) # 绘制第二颗小五角星
national_flag(3, 3, 2, 180 - spin(2, 7)) # 绘制第三颗小五角星
national_flag(5, 1, 2, 180 - spin(4, 5)) # 绘制第四颗小五角星
t.hideturtle() # 隐藏画笔,完成绘制
turtle.done() # 等待用户关闭窗口
用 Python + turtle 模块绘制五星红旗的更多相关文章
- Python turtle模块小黄人程序
讲解Python初级课程的turtle模块,简单粗暴的编写了小黄人的程序.程序还需要进一步优化.难点就是要搞清楚turtle在绘制图形过程中的方向变化. import turtle t = turtl ...
- Python turtle 模块可以编写游戏,是真的吗?
1. 前言 turtle (小海龟) 是 Python 内置的一个绘图模块,其实它不仅可以用来绘图,还可以制作简单的小游戏,甚至可以当成简易的 GUI 模块,编写简单的 GUI 程序. 本文使用 tu ...
- Python turtle库绘制简单图形
一.简介 Python中的turtle库是一个直观有趣的图形绘制函数库.turtle库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形. 二.简单的图形列举 1.绘制4个不同 ...
- Python Turtle库绘制蟒蛇
使用Python Turtle库来绘制蟒蛇 import turtle引入了海龟绘图体系 使用setup函数,设定了一个宽650像素和高350像素的窗体,其位置左上角坐标是200,200 说明位置在距 ...
- Python Turtle模块的简单应用
时钟 import turtle as t import datetime as dt #画出背景 game = t.Screen() game.bgcolor("white") ...
- Python Turtle库绘制表盘时钟
运行效果: 源代码: 1 # coding=utf-8 2 3 import turtle 4 from datetime import * 5 6 # 抬起画笔,向前运动一段距离放下 7 def S ...
- python+turtle 笔记
用Python+turtle绘制佩琪: from turtle import * def nose(x,y):#鼻子 penup()#提起笔 goto(x,y)#定位 pendown()#落笔,开始画 ...
- python绘制图形(Turtle模块)
用python的Turtle模块可以绘制很多精美的图形,下面简单介绍一下使用方法. 需要用到的工具有python,python 的安装这里就不再细说.自行搜索. from turtle import ...
- python中的turtle库绘制图形
1. 前奏: 在用turtle绘制图形时,需要安装对应python的解释器以及IDE,我安装的是pycharm,在安装完pycharm后,在pycharm安装相应库的模块,绘图可以引入turtle模块 ...
- python学习笔记(3)--turtle简单绘制
参考:大学生mooc 北京理工大学的python程序与设计课程 蟒蛇绘制代码如下: #pythonDraw.py import turtle turtle.setup(650,350,200,200) ...
随机推荐
- day12-SpringBoot数据库操作
SpringBoot数据库操作 1.JDBC+HikariDataSource 在SpringBoot 2.x项目中,默认使用Hikari连接池管理数据源.相比于传统的 C3P0 .DBCP.Tomc ...
- Live Home 3D Pro - 用于公寓和房屋的室内设计,支持 3D 实时渲染
Live Home 3D Pro是一个直观的应用程序,用于公寓和房屋的室内设计,以及几乎任何复杂的景观.专业版提供了一套扩展的工具和独特的出口质量. 下载 ► Live Home 3D Pro 下载安 ...
- GPT接入企微应用 - 让工作快乐起来
引子 最近最火的莫过于ChatGPT了,在自己体验后就想着如何其他同事也能方便的起起来,毕竟独乐乐不如众乐乐,自己注册又是V-P-N,又是国外手机验证,对于大部分同事来说门槛还是高的.现在也有不少小程 ...
- Rancher系列文章-Rancher v2.6使用脚本实现导入集群
概述 最近在玩 Rancher, 先从最基本的功能玩起, 目前有几个已经搭建好的 K8S 集群, 需要批量导入, 发现官网已经有批量导入的文档了. 根据 Rancher v2.6 进行验证微调后总结经 ...
- react状态管理器(分模块)之redux和redux + react-redux + reducer和redux + react-redux + reducer分模块 + 异步操作redux-thunk
1.回顾 cnpm i redux react-redux redux-thunk -S store/index.js src/index.js src/views/home/index.jsx + ...
- Oracle_用户-授权-角色
Oracle创建用户及表空间 1. 用户 创建用户: sql> create user <用户名> IDENTIFIED BY <用户密码> default tables ...
- 项目讲解之火爆全网的开源后台管理系统RuoYi
博主是在2018年中就接触了 RuoYi 项目 这个项目,对于当时国内的开源后台管理系统来说,RuoYi 算是一个完成度较高,易读易懂.界面简洁美观的前后端不分离项目. 对于当时刚入行还在写 jsp ...
- kubernetes核心实战(一)--- namespace
kubernetes核心实战 1.资源创建方式 命令行创建 yaml文件创建 2.namespace 命名空间(namespace)是Kubernetes提供的组织机制,用于给集群中的任何对象组进行分 ...
- 【Voyage】GDOI 2023 旅游记 || ECHO.
\(\color{#FFFFFF}{那是什么样的旅途呢}\) \(\color{#FFFFFF}{真的会害怕很多东西呢.想想害怕的其实不止这样一件事,便产生了"其实都一样没关系的,都应该踏过 ...
- Sqlmap注入dvwa平台low级别
工具介绍:sqlmap是一款开源的软件 SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不 ...