python+turtle

news2024/11/25 12:39:30

turtle画图基本操作

基本代码

直接生成图形,不显示乌龟运动轨迹。turtle.tracer(False)

import turtle
turtle.pensize(1)

turtle.tracer(False)#直接生成图形,不显示乌龟运动轨迹。
for i in range(1,100,10):
    turtle.circle(i)

生成图形:

生成几何图形

双层圆

运行如下代码:

import turtle
turtle.setup(500,500,None,None)
turtle.circle(50)


turtle.goto(4,6)
turtle.circle(30)

turtle.pendown()

turtle.home()

生成图形如下

三角形、六边形、圆

运行以下这段代码

import turtle
turtle.pensize(3)
turtle.penup()

turtle.goto(-200,-50)
turtle.pendown()
turtle.begin_fill()
turtle.color('red')
turtle.circle(100,steps=3)#运动一圈 circle,三步step=3,三角形
turtle.end_fill()


turtle.goto(0,-50)
turtle.pendown()

turtle.begin_fill()
turtle.color('yellow')
turtle.circle(100,steps=6)#运动一圈 circle,六步step=6,六边形
turtle.end_fill()



turtle.goto(200,-50)
turtle.dot(50,"green")#运动一圈,一个圆形 dot


生成如下图形:

星星

图形在右,代码在左。

五彩圆

程序代码

import turtle

colors=['red','orange','yellow','green','blue','indigo','purple']
for i in range(7):
    c=colors[i]
    turtle.color(c,c)
    turtle.begin_fill()
    turtle.rt(360/7)
    turtle.circle(50)
    turtle.end_fill()
turtle.done()

生成图形

组合体

积累程序-turtle-数学几何图形-不断调试中发现新东西-新图形。

程序代码

from turtle import *
setup(800,600)

speed(10)
for i in range(5):
    goto(40*i,30*i)
    goto(40*i,0)
    goto(0,0)

    penup()
    goto(0,50*i)
    pendown()
    circle(50*i)
    goto(0,0)

生成图形

 循环网

运行代码:

from turtle import *
tracer(False)

myNum=6
for m in range(6):
    right(30)
    circle(10)
    for i in range(1,100,5):
        pendown()
        
        circle(i)
        
        penup()
        goto(i,i)

    

生成图形:

生成数学图像

不同角度的螺线

程序代码

运行代码,输入不同角度。

import turtle
import time


myjiaodu=int(input("请输入旋转角度:"))
turtle.tracer(False)
#turtle.speed("fastest")#画笔速度
turtle.pensize(2)
turtle.bgcolor("white")
colors=["red","yellow","blue","purple"]


for i in range(400):    
    turtle.forward(2*i)
#    turtle.color(colors[i%4])
    turtle.left(myjiaodu)

turtle.done()

用IDLE运行代码的时候,较慢。所以可以用CMD运行。

用CMD运行,生成图形如下:

12度角

35度角

66度角

97度角

108度角

170度角

直线切割出螺线

代码在左,右为生成图形

不同角度和颜色的螺线

程序代码

import turtle
import time


myjiaodu=int(input("请输入旋转角度:"))
turtle.tracer(False)
#turtle.speed("fastest")#画笔速度
turtle.pensize(2)
turtle.bgcolor("black")
colors=["red","yellow","blue","purple"]


for i in range(400):    
    turtle.forward(2*i)
    turtle.color(colors[i%4])
    turtle.left(myjiaodu)

turtle.done()

输入不同角度数值,生成不同的图像。

生成复杂图形

几何旋转花瓣,

运行代码如下:

#!/usr/bin/env python3
"""      turtle-example-suite:

        tdemo_bytedesign.py

An example adapted from the example-suite
of PythonCard's turtle graphics.

It's based on an article in BYTE magazine
Problem Solving with Logo: Using Turtle
Graphics to Redraw a Design
November 1982, p. 118 - 134

-------------------------------------------

Due to the statement

t.delay(0)

in line 152, which sets the animation delay
to 0, this animation runs in "line per line"
mode as fast as possible.
"""

from turtle import Turtle, mainloop
from time import perf_counter as clock

# wrapper for any additional drawing routines
# that need to know about each other
class Designer(Turtle):

    def design(self, homePos, scale):
        self.up()
        for i in range(5):
            self.forward(64.65 * scale)
            self.down()
            self.wheel(self.position(), scale)
            self.up()
            self.backward(64.65 * scale)
            self.right(72)
        self.up()
        self.goto(homePos)
        self.right(36)
        self.forward(24.5 * scale)
        self.right(198)
        self.down()
        self.centerpiece(46 * scale, 143.4, scale)
        self.getscreen().tracer(True)

    def wheel(self, initpos, scale):
        self.right(54)
        for i in range(4):
            self.pentpiece(initpos, scale)
        self.down()
        self.left(36)
        for i in range(5):
            self.tripiece(initpos, scale)
        self.left(36)
        for i in range(5):
            self.down()
            self.right(72)
            self.forward(28 * scale)
            self.up()
            self.backward(28 * scale)
        self.left(54)
        self.getscreen().update()

    def tripiece(self, initpos, scale):
        oldh = self.heading()
        self.down()
        self.backward(2.5 * scale)
        self.tripolyr(31.5 * scale, scale)
        self.up()
        self.goto(initpos)
        self.setheading(oldh)
        self.down()
        self.backward(2.5 * scale)
        self.tripolyl(31.5 * scale, scale)
        self.up()
        self.goto(initpos)
        self.setheading(oldh)
        self.left(72)
        self.getscreen().update()

    def pentpiece(self, initpos, scale):
        oldh = self.heading()
        self.up()
        self.forward(29 * scale)
        self.down()
        for i in range(5):
            self.forward(18 * scale)
            self.right(72)
        self.pentr(18 * scale, 75, scale)
        self.up()
        self.goto(initpos)
        self.setheading(oldh)
        self.forward(29 * scale)
        self.down()
        for i in range(5):
            self.forward(18 * scale)
            self.right(72)
        self.pentl(18 * scale, 75, scale)
        self.up()
        self.goto(initpos)
        self.setheading(oldh)
        self.left(72)
        self.getscreen().update()

    def pentl(self, side, ang, scale):
        if side < (2 * scale): return
        self.forward(side)
        self.left(ang)
        self.pentl(side - (.38 * scale), ang, scale)

    def pentr(self, side, ang, scale):
        if side < (2 * scale): return
        self.forward(side)
        self.right(ang)
        self.pentr(side - (.38 * scale), ang, scale)

    def tripolyr(self, side, scale):
        if side < (4 * scale): return
        self.forward(side)
        self.right(111)
        self.forward(side / 1.78)
        self.right(111)
        self.forward(side / 1.3)
        self.right(146)
        self.tripolyr(side * .75, scale)

    def tripolyl(self, side, scale):
        if side < (4 * scale): return
        self.forward(side)
        self.left(111)
        self.forward(side / 1.78)
        self.left(111)
        self.forward(side / 1.3)
        self.left(146)
        self.tripolyl(side * .75, scale)

    def centerpiece(self, s, a, scale):
        self.forward(s); self.left(a)
        if s < (7.5 * scale):
            return
        self.centerpiece(s - (1.2 * scale), a, scale)

def main():
    t = Designer()
    t.speed(0)
    t.hideturtle()
    t.getscreen().delay(0)
    t.getscreen().tracer(0)
    at = clock()
    t.design(t.position(), 2)
    et = clock()
    return "runtime: %.2f sec." % (et-at)

if __name__ == '__main__':
    msg = main()
    print(msg)
    mainloop()





生成图形如下:

五彩雪景

运行代码:

'''
【目标】绘制雪景图片


turtle.pensize(3)
turtle.penup()
setx(240)
sety(300)
turtle.circle(10)
turtle.pendown()


'''
#第一步,构建图的背景
from turtle import *
from random import *
import turtle

setup(800,600,200,200)


tracer(False)#不用跟踪画画的轨迹
bgcolor("black")#背景颜色


#第二步,绘制雪花效果。随机数,雪花

hideturtle()
pensize(2)
for i in range(100):
    r,g,b=random(),random(),random()
    pencolor(r,g,b)
    penup()
    setx(randint(-350,350))#修改画笔的横坐标到x,纵坐标不变
    sety(randint(-300,300))#修改画笔的纵标到y,横坐标不变,注意没有等号
    pendown()

    dens=randint(8,12)#dens雪花花瓣数
    snowsize=randint(10,14)#雪花大小


    for j in range(dens):#画每一个雪花线条,来回一条线
        forward(snowsize)
        backward(snowsize)
        right(360/dens)#旋转角度
        

        
#第三步,绘制雪地效果。横线,灰度
hideturtle()
for i in range(400):
    pensize(randint(1,5))
    x=randint(-400,350)#注意有等号
    y=randint(-280,-1)
    r,g,b=0,0,0
    pencolor=(r,g,b)
    penup()
    goto(x,y)
    pendown()
    forward(randint(40,100))

done()

生成图形:

运动星系

程序代码


'''
This example is
inspired by the Wikipedia article on turtle
graphics. (See example wikipedia1 for URLs)

First we create (ne-1) (i.e. 35 in this
example) copies of our first turtle p.
Then we let them perform their steps in
parallel.

Followed by a complete undo().
'''

from turtle import Screen, Turtle, mainloop
from time import perf_counter as clock, sleep

def mn_eck(p, ne,sz):
    turtlelist = [p]
    #create ne-1 additional turtles
    for i in range(1,ne):
        q = p.clone()
        q.rt(360.0/ne)
        turtlelist.append(q)
        p = q
    for i in range(ne):
        c = abs(ne/2.0-i)/(ne*.7)
        # let those ne turtles make a step
        # in parallel:
        for t in turtlelist:
            t.rt(360./ne)
            t.pencolor(1-c,0,c)
            t.fd(sz)

def main():
    s = Screen()
    s.bgcolor("black")
    p=Turtle()
    p.speed(0)
    p.hideturtle()
    p.pencolor("red")
    p.pensize(3)

    s.tracer(36,0)

    at = clock()
    mn_eck(p, 36, 19)
    et = clock()
    z1 = et-at

    sleep(1)

    at = clock()
    while any(t.undobufferentries() for t in s.turtles()):
        for t in s.turtles():
            t.undo()
    et = clock()
    return "runtime: %.3f sec" % (z1+et-at)


if __name__ == '__main__':
    msg = main()
    print(msg)
    mainloop()

图形如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1040548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎样提取视频中的音频?十秒教会你

怎么提取视频中的音频&#xff1f;我们平时在刷视频的时候会听到一些很好听的背景音乐&#xff0c;但有时候我们会发现有的背景音乐音源下载不了&#xff0c;而有的音频是别人自己制作的&#xff0c;根本没有地方可以下载音频&#xff0c;那么我们想要获得视频里的音频要怎么办…

labview 混合信号图 多曲线分组

如果你遇到了混合信号图 多曲线分组显示的问题&#xff0c;本文能给你帮助。 在文章的最好&#xff0c;列出了参考程序下载链接。 一个混合信号图中可包含多个绘图区域。 但一个绘图区域仅能显示数字曲线或者模拟曲线之一&#xff0c;无法兼有二者。 以下显示的分两组&#…

Spring面试题22:Spring支持哪些ORM框架?优缺点分别是什么?Spring可以通过哪些方式访问Hibernate?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring支持哪些ORM框架?优缺点分别是什么? Spring 支持多种 ORM(对象关系映射)框架,其中包括: Hibernate:Hibernate 是一个强大的 ORM 框架…

软考高级架构师下篇-17安全架构设计理论与实践

目录 1. 引言信息安全面临的威胁2. 安全体系架构的范围3.典型安全模型4.信息安全整体架构设计5.数据库系统安全设计6.系统架构脆弱性分析7.安全架构设计实践8. 前文回顾1. 引言 随着科技的发展,信息系统的安全受到诸多方面的威胁,设计信息系统安全架构需要从各个方面考虑,这…

LLM-TAP随笔——有监督微调【深度学习】【PyTorch】【LLM】

文章目录 5、 有监督微调5.1、提示学习&语境学习5.2、高效微调5.3、模型上下文窗口扩展5.4、指令数据构建5.5、开源指令数据集 5、 有监督微调 5.1、提示学习&语境学习 提示学习 完成预测的三个阶段&#xff1a;提示添加、答案搜索、答案映射 提示添加 “[X] 我感到…

NPDP产品经理认证怎么报名?考试难度大吗?

PMDA&#xff08;Product Development and Management Association&#xff09;是美国产品开发与管理协会&#xff0c;在中国由中国人才交流基金会培训中心举办NPDP&#xff08;New Product Development Professional&#xff09;考试&#xff0c;该考试是产品经理国际资格认证…

回归预测 | MATLAB实现RUN-XGBoost龙格库塔优化极限梯度提升树多输入回归预测

回归预测 | MATLAB实现RUN-XGBoost多输入回归预测 目录 回归预测 | MATLAB实现RUN-XGBoost多输入回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现RUN-XGBoost多输入回归预测&#xff08;完整源码和数据&#xff09; 1.龙格库塔优化XGBoost&#xff0c;…

【Linux】详解线程第二篇——用黄牛抢陈奕迅演唱会门票的例子来讲解【 线程互斥与锁 】

线程互斥 与 锁 前言正式开始黄牛抢票demo问题解释if判断。tickets-\-数据不一致 临界资源与临界区互斥锁全局锁局部锁几个问题 互斥锁的原理单个线程时多线程申请锁总结申请锁流程 可重入和线程安全常见的线程不安全的情况常见的线程安全的情况常见不可重入的情况常见可重入的…

premiere 新建 视频导入 视频拼接 视频截取 多余视频删除

1 新建项目 文件 -> 新建 -> 项目 2 导入 2.1 方法一 直接从本地 将 文件拖入对应的文件夹 2.2 方法二 鼠标右键在指定素材文件夹, 选择导入 选择对应本地文件夹对应素材 3 预设 -> 粗剪 -> 在指定模块处 创建序列预设 3.1 指定模块处 鼠标右键 -> 新建项目…

Redis的集群方案

Redis的集群方案总共有3种&#xff1a; 1.主从同步 2.哨兵模式 3.分片集群 一.Redis的主从同步 单节点Redis的并发能力是有限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;就需要搭建主从集群&#xff0c;实现读写分离&#xff0c;一般都是一主多从&#xff0c;…

体育运动模板推荐

最近的朋友圈一半是晒国庆城市布置的美景的&#xff0c;一半当然就是杭州亚运会了。目前杭州亚运会正在如火如荼的进行中&#xff0c;绝美的开幕式&#xff0c;运动健儿们奋力拼搏的精神&#xff0c;在杭州亚运会的舞台上&#xff0c;每个人都是独一无二的英雄。亚运会的舞台&a…

华为 Mate60 系列全球发布:地表最强黑科技旗舰,打破传统,引领未来!

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

‘nvcc‘不是内部或外部命令,也不是可运行的程序或批处理文件

一、首先检查是否正确安装 winR cmd打开终端,cd转到CUDA的位置,即C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\extras\demo_suite,然后输入bandwidthTest.exe并回车进行测试,最后输入deviceQuery.exe并回车进行测试,若Result PASS,则表示是安装成功了的 二、…

Redis集群方式

Redis有三种集群方式&#xff1a;主从复制&#xff0c;哨兵模式和集群。 1.主从复制 主从复制原理 从服务器连接主服务器&#xff0c;发送SYNC命令&#xff1b; 主服务器接收到SYNC命名后&#xff0c;开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令&…

【yolov1】yoloLoss.py

1.计算预测中心点与真实中心点的损失。 2.计算预测的宽高与真实宽高的损失。用根号&#xff0c;是使得小框对误差更敏感。第三项负责计算置信度的误差 标签值是预测框真实框的IOU&#xff0c;作为标签值。 第四项是不负责检测目标的框&#xff0c;让它们的Loss值越小越好。让…

Java函数式接口(Consumer、Function、Predicate、Supplier)详解及代码示例

函数式接口 java.util.function : Consumer :消费型函数接口 void accept(T t) Function :函数型接口 R apply(T t) Predicate :判断型接口 boolean test(T t) Supplier :供给型接口 T get() Consumer - 消费型函数接口 该接口代表了一个接受一个参数并且不返回结果的操作。…

vivado乘法器IP核进行无符号与有符号数相乘问题的验证

本文验证乘法器IP核Multiplier进行无符号(unsigned)与有符号数(signed)相乘的正确性&#xff0c;其中也遇到了一些问题&#xff0c;做此记录。 配套工程&#xff1a;https://download.csdn.net/download/weixin_48412658/88354179 文章目录 问题的讨论验证过程IP核配置例化乘…

工业AI视觉检测优势显著,深眸科技为工业自动化发展注入更强动力

随着工业自动化的不断发展&#xff0c;工业机器视觉检测技术日趋成熟&#xff0c;能够对制造生产线上的产品进行识别、定位、检测、测量等功能&#xff0c;使得工业生产更加高效和精准。 同时机器视觉检测也是一种基于图像处理和模式识别的技术&#xff0c;能够通过高清晰度工…

00-MySQL数据库的使用-下

一 多表查询 多表查询简介 笛卡尔乘积 笛卡尔乘积 &#xff1a; 当一个连接条件无效或被遗漏时&#xff0c;其结果是一个笛卡尔乘积 (Cartesian product)&#xff0c;其中所有行的组合都被显示。第一个表中的所 有行连接到第二个表中的所有行。一个笛卡尔乘积会产生大量的 行…