Python青少年简明教程:turtle模块入门

2024-08-28 22:52

本文主要是介绍Python青少年简明教程:turtle模块入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python青少年简明教程:turtle模块入门

Python中的turtle内置模块是一个非常流行的用于教学和编程初学者的图形库,非常有趣。这个模块特别适合于初学者,尤其是青少年,因为它既简单又直观,可以通过简单的命令生成视觉效果。它允许用户通过控制一个“海龟”(turtle)在屏幕上移动来绘制图形和图案。海龟在屏幕上的初始位置是中心,面向右侧。通过向海龟发送命令(也称为方法或函数),如向前移动、向后移动、转向等,可以绘制出各种形状和图案。

官方文档: https://docs.python.org/3/library/turtle.html

中文https://docs.python.org/zh-cn/3/library/turtle.html

注意事项,turtle模块可能在某些环境中运行较慢,不适合复杂的图形处理任务。

turtle的坐标

理解turtle的坐标系统对于精确控制绘图非常重要。turtle坐标系统是一个二维直角坐标系:

坐标原点 (0, 0)

默认情况下,坐标原点位于画布的中心。

x轴:水平方向,向右为正,向左为负。

y轴:垂直方向,向上为正,向下为负。

角度与方向

角度以度为单位。

0度指向东(右),90度指向北(上),180度指向西(左),270度指向南(下)。

逆时针为角度正值,顺时针为角度负值。

参加下图:

上面情况与数学中的直角坐标系相似。

默认画布大小通常是 800x600像素。

可以使用 turtle.setup()函数用于设置 Python turtle 绘图窗口的尺寸(画布大小)和位置。

参见下图:

turtle的setup()函数语法:

turtle.setup(width, height, startx, starty)

其中:

width: 指定画布的宽度。可以是整数(以像素为单位)或使用小于等于1.0的浮点数(以屏幕宽度的百分比为单位)。

height: 指定画布的高度。可以是整数(以像素为单位)或使用小于等于1.0的浮点数(以屏幕高度的百分比为单位)。

startx:指定画布左上角在屏幕上的水平位置。可以是整数或 None。如果是整数,则表示像素值;如果是 None,则画布会在屏幕水平居中显示。(可选)

starty: 指定画布左上角在屏幕上的垂直位置。可以是整数或 None。如果是整数,则表示像素值;如果是 None,则画布会在屏幕垂直居中显示。(可选)

turtle模块你可以认为“海龟绘图”,想象一只海龟带着一支笔在画布上移动,留下轨迹。

初始位置和方向

程序开始时,turtle默认位于原点 (0, 0)。

初始方向为向右(沿着正x轴方向)。

要使用turtle模块,需要先用如下导入

import turtle

然后,就可以使用了。

先看一个简单的示例:绘制了一个正方形。源码如下:

import turtle # 导入模块# 创建一个屏幕对象(可选,但用于一些高级功能时很有用)  
screen = turtle.Screen()# 创建一个turtle对象(如果不指定,将使用默认的turtle)  
t = turtle.Turtle()  # 设置速度(范围从0到10,0表示最快)  
t.speed(1)# 设置画笔颜色为红色  
t.color("red")  # 绘制正方形  
for _ in range(4):  t.forward(100)  # 前进100单位  t.right(90)     # 右转90度  # 隐藏turtle图标(可选)  
t.hideturtle()  # 点击窗口时退出(可选)  
screen.exitonclick()

运行效果如下:

基本操作方法(也有人称为函数或命令)如下

将海龟送回起点

turtle.home()

初始位置在海龟屏幕的中心(这适用于海龟消失在屏幕之外的情况)。

获取海龟具体x-y 坐标位置

turtle.pos()

移动

turtle.forward(100)  # 向前移动100单位(单位通常是像素)。forward 可简写为fd

turtle.backward(50)  # 向后移动50单位。backward 可简写为bk

goto(x, y): 直接移动到指定坐标。

转向

turtle.right(90)  # 向右转90度

turtle.left(45)   # 向左转45度

抬笔和落笔

turtle.penup()    # 抬起笔(移动不画线)

turtle.pendown()  # 放下笔(移动时画线)

设置颜色:

这个方法可以用来设置前景色和背景色。语法

turtle.color()

turtle.color(color)

turtle.color(r, g, b)

turtle.color(pencolor, fillcolor)

说明

1)不带参数时turtle.color(),返回当前的笔色和填充色。

返回值是一个包含两个颜色字符串的元组:(pencolor, fillcolor)

2)一个参数时turtle.color(color),同时设置笔色和填充色为该颜色。

color 可以是颜色字符串(颜色名,注1)或 RGB 元组(注2)。

3)三个参数时turtle.color(r, g, b),表示 RGB 值,同时设置笔色和填充色。

4)两个参数时turtle.color(pencolor, fillcolor),分别设置笔色和填充色。每个颜色参数可以是颜色字符串或 RGB 元组。

【注1:是一个颜色名称的字符串,比如 "red", "blue", "green", "yellow" 等;也可以是 16 进制颜色代码,十六进制颜色代码:格式为 "#RRGGBB",其中 RR、GG、BB 分别代表红、绿、蓝的十六进制值(00-FF),比如 "#FF0000" 代表红色。

注2:RGB 元组,是一个包含三个元素的元组,分别代表红色、绿色、蓝色的强度,每个元素的取值范围是 0 到 1 的浮点数,表示颜色的深浅。如(0.2, 0.8, 0.55)】

示例:

turtle.color("red", "yellow")  # 笔色红,填充色黄

turtle.color("#FF0000", "#FFFF00")  # 同上,使用十六进制代码

turtle.color((1, 0, 0), (0, 1, 0))  # 笔色红,填充色绿,使用 RGB 元组

turtle.color("red", (0, 1, 0))  # 可以混合使用:笔色用名称,填充色用 RGB

结束语句

turtle.mainloop()

turtle.done()

turtle.mainloop()和turtle.done()效果相同,二选一即可。通常用turtle.done()。

如果不调用 turtle.done(),在某些环境下(特别是非交互式环境),图形窗口可能会立即关闭,用户看不到绘制结果。

在某些集成开发环境(IDE)中,可能不需要显式调用 turtle.done(),因为 IDE 可能会自动保持窗口打开。

设置绘制速度

turtle.speed(speed=None)

其中:

speed=None,表示不传入参数调用 turtle.speed(),它会返回当前的速度设置,而不会改变速度。

speed:可以是以下值之一:

一个介于 0 和 10 之间的整数。速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。注意,0 表示 没有 动画效果,最快的速度。

一个字符串,如 "fastest", "fast", "normal", "slow", 或 "slowest"。这些字符串分别对应于速度值 0, 10, 6, 3, 和 1。

另外提示,这个函数不是必须的。如果你不调用这个函数,turtle 将使用默认速度,通常是 speed("normal"),大约相当于 speed(6)。

turtle的speed函数示例:

import turtle# 创建一个海龟对象
t = turtle.Turtle()# 查询当前速度而不改变它
current_speed = t.speed()
print(f"当前速度: {current_speed}")# 绘制一条线,使用默认速度,大约相当于 speed(6)
t.forward(150)# 设置新的速度
t.speed(1)  # 设置为最慢速度# 设置新颜色
t.color("red")# 再次绘制一条线,使用新颜色和新速度
t.forward(150)turtle.done()

运行效果:

开始和结束填充

turtle.begin_fill()

turtle.end_fill()

setheading()函数

用于设置(控制)海龟的朝向(航向)。语法:

turtle.setheading(angle)

setheading可简写为seth

angle:一个数值,表示要设置的角度。angle为正逆时针转向,顺时针旋转为angle为负顺时针转向。每次setheading(angle) 小海龟以正东(X轴正方向)为基准转向angle角度。

turtle的setheading函数详解 https://blog.csdn.net/cnds123/article/details/120226118

特别提示: right(angle)或left(angle)与setheading(angle)的区别

每次setheading(angle) 小海龟以正东(X轴正方向)为基准转向angle角度。与之不同,每次right(angle)或left(angle)小海龟以当前方向为基准向right或left转向angle角度。

circle() 函数

用于绘制圆形或圆弧。格式:

turtle.circle(radius, extent=None, steps=None)

从海龟当前位置和方向开始根据半径radius绘制extent角度的弧形。

参数:

radius :圆半径。当radius值为正数时,圆心在当前画笔(小海龟)左侧;当radius值为负数时,圆心在当前画笔(小海龟)右侧。

extent :可选参数,绘制的弧形角度(弧形所对的圆心角)。当无该参数或参数为None时,绘制整个圆形——默认取值360。当extent的值为正数时,顺画笔(小海龟)当前方向绘制弧形; 当extent的值为负数时,逆画笔(小海龟)当前方向绘制弧形。

steps: 可选参数,表示绘制圆弧的步数,默认值为 360。步数越多,圆弧越平滑。

turtle库的circle函数详解 https://blog.csdn.net/cnds123/article/details/121457058

示例1、绘制正方形

import turtleturtle.color("red")      # 设置画笔颜色
turtle.pensize(5)        # 设置画笔粗细turtle.fillcolor("yellow")   # 设置填充颜色
turtle.begin_fill()  # 设置开始# 绘制正方形
for _ in range(4):turtle.forward(100)turtle.right(90)turtle.end_fill() # 设置结束turtle.done()

运行效果:

示例2:绘制一个简单的房子

import turtle# 设置画笔
t = turtle.Turtle()
t.speed(2)# 绘制主体
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)
t.left(90)
t.forward(100)# 绘制朝上的屋顶
t.left(90)  # 调整方向为向上
t.goto(0, 100)  # 移动到屋顶起点
t.left(45)
t.forward(70)
t.right(90)
t.forward(70)# 绘制门
t.penup()
t.goto(40, 0)
t.pendown()
t.setheading(90)  # 设置方向为向上
t.forward(50)
t.left(90)
t.forward(30)
t.left(90)
t.forward(50)# 绘制圆形窗户
t.penup()
t.goto(70, 70)  # 移动到窗户位置
t.pendown()
t.circle(15)  # 绘制半径为15的圆# 隐藏海龟图标  
t.hideturtle()  # 保持窗口打开
turtle.done()

运行效果如下:

示例3:使用 setheading() 和 circle() 来创建更复杂的图形:

import turtlet = turtle.Turtle()for _ in range(36):t.circle(50)t.setheading(t.heading() + 10)turtle.done()

其中单个下划线(_)是一个变量。

运行效果如下:

Python 中,以单个下划线(_)做变量,表示一个临时的或不重要的变量——不关心循环变量的值,只是想重复执行某个操作。

另外,在 Python 解释器(REPL)中,_ 可以用来获取上一次表达式的结果。参见下图:

这篇关于Python青少年简明教程:turtle模块入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116113

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联