Python海龟绘图库:从入门到精通 – Python官方文档

thbcm阅读(233)

turtle — 海龟绘图

源码: Lib/turtle.py

概述

海龟绘图是对 最早在 Logo 中引入的受欢迎的几何绘图工具 的实现,它由 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 在 1967 年开发。

入门

请想象绘图区有一只机器海龟,起始位置在 x-y 平面的 (0, 0) 点。先执行 import turtle,再执行 turtle.forward(15),它将(在屏幕上)朝所面对的 x 轴正方向前进 15 像素,随着它的移动画出一条线段。再执行 turtle.right(25),它将原地右转 25 度。

Turtle star

使用海龟绘图可以编写重复执行简单动作的程序画出精细复杂的形状。

在 Python 中,海龟绘图提供了一个实体“海龟”形象(带有画笔的小机器动物),假定它在地板上平铺的纸张上画线。

对于学习者来说这是一种接触编程概念和与软件交互的高效且久经验证的方式,因为它能提供即时、可见的反馈。 它还能提供方便直观的图形输出。

海龟绘图最初是作为一种教学工具被创建的,供教师在课堂上使用。 对于需要生成一些图形输出的程序员来说这是一种无需在工作中引入更高复杂度或外部库的方式。

教程

新用户应当从这里开始。 在本教程中我们将探索海龟绘图的一些基本知识。

启动海龟环境

在 Python shell 中,导入 turtle 模块的所有对象:

from turtle import *

如果你遇到了 No module named '_tkinter' 错误,则需要在你的系统中安装 Tk 接口包

基本绘图

让海龟前进 100 步:

forward(100)

你应该会看到(最可能的情况,是在你的显示器的一个新窗口中)海龟画出一条线段,方向朝东。 改变海龟的方向,让它向左转 120 度(逆时针):

left(120)

让我们继续画一个三角形:

forward(100)
left(120)
forward(100)

注意以一个箭头表示的海龟是如何随着你的操纵指向不同方向的。

请继续尝试这些命令,还可以使用 backward()right()

画笔控制

试着改变颜色 —— 例如,color('blue') 和线宽 —— 例如,width(3) 然后再次绘制。

您也可以在不绘制线条的情况下移动海龟,即在移动前抬起画笔: up()。 要重新开始绘制,请使用 down()

海龟的位置

将海龟送回起点(这适用于海龟消失在屏幕之外的情况):

home()

初始位置在海龟屏幕的中心。 如果你需要知道具体数值,可以这样获取海龟的 x-y 坐标:

pos()

初始点在 (0, 0)

过一段时间后,也许可以考虑清空窗口这样我们就可以重新开始:

clearscreen()

使用算法绘制图案

使用循环,可以构建出各种几何图案:

for steps in range(100):
    for c in ('blue', 'red', 'green'):
        color(c)
        forward(steps)
        right(30)

– 当然,这仅受限于你的想象力!

让我们绘制本页面顶部的星形。 我们想要用红色线条,黄色填充:

color('red')
fillcolor('yellow')

就像用 up()down() 决定是否画线一样,填充也可以打开或关闭:

begin_fill()

接下来我们将创建一个循环:

while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break

abs(pos()) < 1 是确定海龟何时回到初始点的好办法。

最后,完成填充:

end_fill()

(请注意只有在你给出 end_fill() 命令时才会实际进行填充。)

如何…

本节介绍一些典型的海龟使用案例和操作方式。

尽快地开始

海龟绘图形的乐趣之一在于通过简单的命令就能获得即时的视觉反馈 —— 这是一种向儿童介绍编程理念的绝佳方式,而且开销最小(当然,不仅适用于儿童)。

海龟模块将其所有基本功能作为函数公开,并通过 from turtle import * 提供使这一切成为可能。 海龟绘图教程 介绍了相关的步骤。

值得注意的是许多海乌命令还有更简洁的等价形式,例如 fd() 对应 forward()。 对于不擅长打字的学习者来说这尤其有用。

你需要在系统中安装 Tk 接口软件包,才能使用海龟绘图。 请注意这并不总是很容易做到的,所以如果你打算让学习者使用海龟绘图请事先检查这一点。

使用 turtle 模块命名空间

使用 from turtle import * 是很方便 —— 但要注意它导入的对象集相当大,如果你还在做海龟绘图以外的事情就有发生名称冲突的风险(如果你在可能导入了其他模块的脚本中使用海龟绘图则可能会遇到更大的问题)。

解决办法是使用 import turtle —— fd() 将变成 turtle.fd()width() 将变成 turtle.width() 等等。 (如果反复输入“turtle”太过烦琐,还可改成 import turtle as t 等。)

在脚本中使用海龟绘图

建议使用上文所述的 turtle 模块命名空间,例如:

import turtle as t
from random import random

for i in range(100):
    steps = int(random() * 100)
    angle = int(random() * 360)
    t.right(angle)
    t.fd(steps)

但还需要另一个步骤 —— 因为一旦脚本结束,Python 将会同时关闭海龟的窗口。 请添加:

t.mainloop()

到脚本的末尾。 现在脚本将等待被关闭而不会自动退出直到被主动终止,例如海龟绘图窗口被关闭。

使用面向对象的海龟绘图

参见

面向对象接口说明

除了非常基本的入门目的,或是尽快尝试操作之外,使用面向对象的方式进行海龟绘图更为常见也更为强大。 例如,这将允许屏幕上同时存在多只海龟。

在这种方式下,各种海龟命令都是对象(主要是 Turtle 对象)的方法。 你 可以 在 shell 中使用面向对象的方法,但在 Python 脚本中使用是更为典型的做法。

这样上面的例子就将变成:

from turtle import Turtle
from random import random

t = Turtle()
for i in range(100):
    steps = int(random() * 100)
    angle = int(random() * 360)
    t.right(angle)
    t.fd(steps)

t.screen.mainloop()

请注意最后一行。 t.screen 是 Turtle 实例所在的 Screen 的实例;它是与海龟一起自动创建的。

海龟的屏幕可以被自定义,例如:

t.screen.title('Object-oriented turtle demo')
t.screen.bgcolor("orange")

海龟绘图参考

备注

以下文档给出了函数的参数列表。对于方法来说当然还有额外的第一个参数 self,这里省略了。

Turtle 方法

海龟动作
移动和绘制
forward() |
fd() 前进
backward() |
bk() |
back() 后退
right() |
rt() 右转
left() |
lt() 左转
goto() |
setpos() |
setposition() 前往/定位
teleport()
setx() 设置x坐标
sety() 设置y坐标
setheading() |
seth() 设置朝向
home() 返回原点
circle() 画圆
dot() 画点
stamp() 印章
clearstamp() 清除印章
clearstamps() 清除多个印章
undo() 撤消
speed() 速度
获取海龟的状态
position() |
pos() 位置
towards() 目标方向
xcor() x坐标
ycor() y坐标
heading() 朝向
distance() 距离
设置与度量单位
degrees() 角度
radians() 弧度
画笔控制
绘图状态
pendown() |
pd() |
down() 画笔落下
penup() |
pu() |
up() 画笔抬起
pensize() |
width() 画笔粗细
pen() 画笔
isdown() 画笔是否落下
颜色控制
color() 颜色
pencolor() 画笔颜色
fillcolor() 填充颜色
填充
filling() 是否填充
begin_fill() 开始填充
end_fill() 结束填充
更多绘图控制
reset() 重置
clear() 清空
write() 书写
海龟状态
可见性
showturtle() |
st() 显示海龟
hideturtle() |
ht() 隐藏海龟
isvisible() 是否可见
外观
shape() 形状
resizemode() 大小调整模式
shapesize() |
turtlesize() 形状大小
shearfactor() 剪切因子
tiltangle() 倾角
tilt() 倾斜
shapetransform() 变形
get_shapepoly() 获取形状多边形
使用事件
onclick() 当鼠标点击
onrelease() 当鼠标释放
ondrag() 当鼠标拖动
特殊海龟方法
begin_poly() 开始记录多边形
end_poly() 结束记录多边形
get_poly() 获取多边形
clone() 克隆
getturtle() |
getpen() 获取海龟画笔
getscreen() 获取屏幕
setundobuffer() 设置撤消缓冲区
undobufferentries() 撤消缓冲区条目数

TurtleScreen/Screen 方法

窗口控制
bgcolor() 背景颜色
bgpic() 背景图片
clearscreen()
resetscreen()
screensize() 屏幕大小
setworldcoordinates() 设置世界坐标系
动画控制
delay() 延迟
tracer() 追踪
update() 更新
使用屏幕事件
listen() 监听
onkey() |
onkeyrelease() 当键盘按下并释放
onkeypress() 当键盘按下
onclick() |
onscreenclick() 当点击屏幕
ontimer() 当达到定时
mainloop() |
done() 主循环
设置与特殊方法
mode()
colormode() 颜色模式
getcanvas() 获取画布
getshapes() 获取形状
register_shape() |
addshape() 添加形状
turtles() 所有海龟
window_height() 窗口高度
window_width() 窗口宽度
输入方法
textinput() 文本输入
numinput() 数字输入
Screen 专有方法
bye() 退出
exitonclick() 当点击时退出
setup() 设置
title() 标题

RawTurtle/Turtle 方法和对应函数

本节中的大部分示例都使用 Turtle 类的一个实例,命名为 turtle

海龟动作

turtle.
forward
(
distance
)
turtle.
fd
(
distance
)
参数
:

distance — 一个数值 (整型或浮点型)

海龟前进 distance 指定的距离,方向为海龟的朝向。

>>>

>>> turtle.position()
(0.00,0.00)
>>> turtle.forward(25)
>>> turtle.position()
(25.00,0.00)
>>> turtle.forward(-75)
>>> turtle.position()
(-50.00,0.00)
turtle.
back
(
distance
)
turtle.
bk
(
distance
)
turtle.
backward
(
distance
)
参数
:

distance — 一个数值

海龟后退 distance 指定的距离,方向与海龟的朝向相反。不改变海龟的朝向。

>>>

>>> turtle.position()
(0.00,0.00)
>>> turtle.backward(30)
>>> turtle.position()
(-30.00,0.00)
turtle.
right
(
angle
)
turtle.
rt
(
angle
)
参数
:

angle — 一个数值 (整型或浮点型)

海龟右转 angle 个单位。(单位默认为角度,但可通过 degrees()radians() 函数改变设置。) 角度的正负由海龟模式确定,参见 mode()

>>>

>>> turtle.heading()
22.0
>>> turtle.right(45)
>>> turtle.heading()
337.0
turtle.
left
(
angle
)
turtle.
lt
(
angle
)
参数
:

angle — 一个数值 (整型或浮点型)

海龟左转 angle 个单位。(单位默认为角度,但可通过 degrees()radians() 函数改变设置。) 角度的正负由海龟模式确定,参见 mode()

>>>

>>> turtle.heading()
22.0
>>> turtle.left(45)
>>> turtle.heading()
67.0
turtle.
goto
(
x,
y=None
)
turtle.
setpos
(
x,
y=None
)
turtle.
setposition
(
x,
y=None
)
参数
:
  • x — 一个数值或数值对/向量

  • y — 一个数值或 None

如果 yNonex 应为一个表示坐标的数值对或 Vec2D 类对象 (例如 pos() 返回的对象).

海龟移动到一个绝对坐标。如果画笔已落下将会画线。不改变海龟的朝向。

>>>

>>> tp = turtle.pos()
>>> tp
(0.00,0.00)
>>> turtle.setpos(60,30)
>>> turtle.pos()
(60.00,30.00)
>>> turtle.setpos((20,80))
>>> turtle.pos()
(20.00,80.00)
>>> turtle.setpos(tp)
>>> turtle.pos()
(0.00,0.00)
turtle.
teleport
(
x,
y=None,
*,
fill_gap=False
)
参数
:
  • x — 一个数值或 None

  • y — 一个数值或 None

  • fill_gap — 布尔

将海龟移到某个绝对位置。 不同于 goto(x, y),这将不会画一条线段。 海龟的方向不变。 如果当前正在填充,离开后原位置上的多边形将被填充,在移位后将再次开始填充。 这可以通过 fill_gap=True 来禁用,此设置将使在移位期间海龟的移动轨迹线像在 goto(x, y) 中一样被当作填充边缘。

>>>

>>> tp = turtle.pos()
>>> tp
(0.00,0.00)
>>> turtle.teleport(60)
>>> turtle.pos()
(60.00,0.00)
>>> turtle.teleport(y=10)
>>> turtle.pos()
(60.00,10.00)
>>> turtle.teleport(20, 30)
>>> turtle.pos()
(20.00,30.00)

Added in version 3.12.

turtle.
setx
(
x
)
参数
:

x — 一个数值 (整型或浮点型)

设置海龟的横坐标为 x,纵坐标保持不变。

>>>

>>> turtle.position()
(0.00,240.00)
>>> turtle.setx(10)
>>> turtle.position()
(10.00,240.00)
turtle.
sety
(
y
)
参数
:

y — 一个数值 (整型或浮点型)

设置海龟的纵坐标为 y,横坐标保持不变。

>>>

>>> turtle.position()
(0.00,40.00)
>>> turtle.sety(-10)
>>> turtle.position()
(0.00,-10.00)
turtle.
setheading
(
to_angle
)
turtle.
seth
(
to_angle
)
参数
:

to_angle — 一个数值 (整型或浮点型)

设置海龟的朝向为 to_angle。以下是以角度表示的几个常用方向:

标准模式

logo 模式

0 – 东

0 – 北

90 – 北

90 – 东

180 – 西

180 – 南

270 – 南

270 – 西

>>>

>>> turtle.setheading(90)
>>> turtle.heading()
90.0
turtle.
home
(
)

海龟移至初始坐标 (0,0),并设置朝向为初始方向 (由海龟模式确定,参见 mode())。

>>>

>>> turtle.heading()
90.0
>>> turtle.position()
(0.00,-10.00)
>>> turtle.home()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
turtle.
circle
(
radius,
extent=None,
steps=None
)
参数
:
  • radius — 一个数值

  • extent — 一个数值 (或 None)

  • steps — 一个整型数 (或 None)

绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent*则绘制整个圆。如果 *extent 不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 extent 的值而改变。

圆实际是以其内切正多边形来近似表示的,其边的数量由 steps 指定。如果未指定边数则会自动确定。此方法也可用来绘制正多边形。

>>>

>>> turtle.home()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
>>> turtle.circle(50)
>>> turtle.position()
(-0.00,0.00)
>>> turtle.heading()
0.0
>>> turtle.circle(120, 180)  # 画一个半圆
>>> turtle.position()
(0.00,240.00)
>>> turtle.heading()
180.0
turtle.
dot
(
size=None,
*color
)
参数
:
  • size — 一个整型数 >= 1 (如果指定)

  • color — 一个颜色字符串或颜色数值元组

绘制一个直径为 size,颜色为 color 的圆点。如果 size 未指定,则直径取 pensize+4 和 2*pensize 中的较大值。

>>>

>>> turtle.home()
>>> turtle.dot()
>>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50)
>>> turtle.position()
(100.00,-0.00)
>>> turtle.heading()
0.0
turtle.
stamp
(
)

在海龟当前位置印制一个海龟形状。返回该印章的 stamp_id,印章可以通过调用 clearstamp(stamp_id) 来删除。

>>>

>>> turtle.color("blue")
>>> stamp_id = turtle.stamp()
>>> turtle.fd(50)
turtle.
clearstamp
(
stampid
)
参数
:

stampid — 一个整型数,必须是之前 stamp() 调用的返回值

删除 stampid 指定的印章。

>>>

>>> turtle.position()
(150.00,-0.00)
>>> turtle.color("blue")
>>> astamp = turtle.stamp()
>>> turtle.fd(50)
>>> turtle.position()
(200.00,-0.00)
>>> turtle.clearstamp(astamp)
>>> turtle.position()
(200.00,-0.00)
turtle.
clearstamps
(
n=None
)
参数
:

n — 一个整型数 (或 None)

删除全部或前/后 n 个海龟印章。如果 nNone 则删除全部印章,如果 n > 0 则删除前 n 个印章,否则如果 n < 0 则删除后 n 个印章。

>>>

>>> for i in range(8):
...     unused_stamp_id = turtle.stamp()
...     turtle.fd(30)
>>> turtle.clearstamps(2)
>>> turtle.clearstamps(-2)
>>> turtle.clearstamps()
turtle.
undo
(
)

撤消 (或连续撤消) 最近的一个 (或多个) 海龟动作。可撤消的次数由撤消缓冲区的大小决定。

>>>

>>> for i in range(4):
...     turtle.fd(50); turtle.lt(80)
...
>>> for i in range(8):
...     turtle.undo()
turtle.
speed
(
speed=None
)
参数
:

speed — 一个 0..10 范围内的整型数或速度字符串 (见下)

设置海龟移动的速度为 0..10 表示的整型数值。如未指定参数则返回当前速度。

如果输入数值大于 10 或小于 0.5 则速度设为 0。速度字符串与速度值的对应关系如下:

  • “fastest”: 0 最快

  • “fast”: 10 快

  • “normal”: 6 正常

  • “slow”: 3 慢

  • “slowest”: 1 最慢

速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。

注意: speed = 0 表示 没有 动画效果。forward/back 将使海龟向前/向后跳跃,同样的 left/right 将使海龟立即改变朝向。

>>>

>>> turtle.speed()
3
>>> turtle.speed('normal')
>>> turtle.speed()
6
>>> turtle.speed(9)
>>> turtle.speed()
9

获取海龟的状态

turtle.
position
(
)
turtle.
pos
(
)

返回海龟当前的坐标 (x,y) (为 Vec2D 矢量类对象)。

>>>

>>> turtle.pos()
(440.00,-0.00)
turtle.
towards
(
x,
y=None
)
参数
:
  • x — 一个数值或数值对/矢量,或一个海龟实例

  • y — 一个数值——如果 x 是一个数值,否则为 None

返回从海龟位置到由 (x,y)、矢量或另一海龟所确定位置的连线的夹角。 此数值依赖于海龟的初始朝向,这又取决于 “standard”/”world” 或 “logo” 模式设置。

>>>

>>> turtle.goto(10, 10)
>>> turtle.towards(0,0)
225.0
turtle.
xcor
(
)

返回海龟的 x 坐标。

>>>

>>> turtle.home()
>>> turtle.left(50)
>>> turtle.forward(100)
>>> turtle.pos()
(64.28,76.60)
>>> print(round(turtle.xcor(), 5))
64.27876
turtle.
ycor
(
)

返回海龟的 y 坐标。

>>>

>>> turtle.home()
>>> turtle.left(60)
>>> turtle.forward(100)
>>> print(turtle.pos())
(50.00,86.60)
>>> print(round(turtle.ycor(), 5))
86.60254
turtle.
heading
(
)

返回海龟当前的朝向 (数值依赖于海龟模式参见 mode())。

>>>

>>> turtle.home()
>>> turtle.left(67)
>>> turtle.heading()
67.0
turtle.
distance
(
x,
y=None
)
参数
:
  • x — 一个数值或数值对/矢量,或一个海龟实例

  • y — 一个数值——如果 x 是一个数值,否则为 None

返回从海龟位置到由 (x,y),适量或另一海龟对应位置的单位距离。

>>>

>>> turtle.home()
>>> turtle.distance(30,40)
50.0
>>> turtle.distance((30,40))
50.0
>>> joe = Turtle()
>>> joe.forward(77)
>>> turtle.distance(joe)
77.0

度量单位设置

turtle.
degrees
(
fullcircle=360.0
)
参数
:

fullcircle — 一个数值

设置角度的度量单位,即设置一个圆周为多少 “度”。默认值为 360 度。

>>>

>>> turtle.home()
>>> turtle.left(90)
>>> turtle.heading()
90.0

将角度的度量单位改为梯度(grad 或称 gon,
grade 或 gradian,等于直角的 1/100。)
>>> turtle.degrees(400.0)
>>> turtle.heading()
100.0
>>> turtle.degrees(360)
>>> turtle.heading()
90.0
turtle.
radians
(
)

设置角度的度量单位为弧度。其值等于 degrees(2*math.pi)

>>>

>>> turtle.home()
>>> turtle.left(90)
>>> turtle.heading()
90.0
>>> turtle.radians()
>>> turtle.heading()
1.5707963267948966

画笔控制

绘图状态

turtle.
pendown
(
)
turtle.
pd
(
)
turtle.
down
(
)

画笔落下 — 移动时将画线。

turtle.
penup
(
)
turtle.
pu
(
)
turtle.
up
(
)

画笔抬起 — 移动时不画线。

turtle.
pensize
(
width=None
)
turtle.
width
(
width=None
)
参数
:

width — 一个正数值

设置线条的粗细为 width 或返回该值。如果 resizemode 设为 “auto” 并且 turtleshape 为多边形,该多边形也以同样组细的线条绘制。如未指定参数,则返回当前的 pensize。

>>>

>>> turtle.pensize()
1
>>> turtle.pensize(10)   # 从这里开始,画出宽度为10的线
turtle.
pen
(
pen=None,
**pendict
)
参数
:
  • pen — 一个包含部分或全部下列键的字典

  • pendict — 一个或多个以下列键为关键字的关键字参数

返回或设置画笔的属性,以一个包含以下键值对的 “画笔字典” 表示:

  • “shown”: True/False

  • “pendown”: True/False

  • “pencolor”: 颜色字符串或颜色元组

  • “fillcolor”: 颜色字符串或颜色元组

  • “pensize”: 正数值

  • “speed”: 0..10 范围内的数值

  • “resizemode”: “auto” 或 “user” 或 “noresize”

  • “stretchfactor”: (正数值, 正数值)

  • “outline”: 正数值

  • “tilt”: 数值

此字典可作为后续调用 pen() 时的参数,以恢复之前的画笔状态。另外还可将这些属性作为关键词参数提交。使用此方式可以用一条语句设置画笔的多个属性。

>>>

>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)
>>> sorted(turtle.pen().items())
[('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),
 ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),
 ('shearfactor', 0.0), ('shown', True), ('speed', 9),
 ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]
>>> penstate=turtle.pen()
>>> turtle.color("yellow", "")
>>> turtle.penup()
>>> sorted(turtle.pen().items())[:3]
[('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]
>>> turtle.pen(penstate, fillcolor="green")
>>> sorted(turtle.pen().items())[:3]
[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]
turtle.
isdown
(
)

如果画笔落下返回 True,如果画笔抬起返回 False

>>>

>>> turtle.penup()
>>> turtle.isdown()
False
>>> turtle.pendown()
>>> turtle.isdown()
True

颜色控制

turtle.
pencolor
(
*args
)

返回或设置画笔颜色。

允许以下四种输入格式:

pencolor()

返回以颜色描述字符串或元组 (见示例) 表示的当前画笔颜色。可用作其他 color/pencolor/fillcolor 调用的输入。

pencolor(colorstring)

设置画笔颜色为 colorstring 指定的 Tk 颜色描述字符串,例如 "red""yellow""#33cc8c"

pencolor((r, g, b))

设置画笔颜色为以 r, g, b 元组表示的 RGB 颜色。r, g, b 的取值范围应为 0..colormode,colormode 的值为 1.0 或 255 (参见 colormode())。

pencolor(r, g, b)

设置画笔颜色为以 r, g, b 表示的 RGB 颜色。r, g, b 的取值范围应为 0..colormode。

如果 turtleshape 为多边形,该多边形轮廓也以新设置的画笔颜色绘制。

>>>

>>> colormode()
1.0
>>> turtle.pencolor()
'red'
>>> turtle.pencolor("brown")
>>> turtle.pencolor()
'brown'
>>> tup = (0.2, 0.8, 0.55)
>>> turtle.pencolor(tup)
>>> turtle.pencolor()
(0.2, 0.8, 0.5490196078431373)
>>> colormode(255)
>>> turtle.pencolor()
(51.0, 204.0, 140.0)
>>> turtle.pencolor('#32c18f')
>>> turtle.pencolor()
(50.0, 193.0, 143.0)
turtle.
fillcolor
(
*args
)

返回或设置填充颜色。

允许以下四种输入格式:

fillcolor()

返回以颜色描述字符串或元组 (见示例) 表示的当前填充颜色。可用作其他 color/pencolor/fillcolor 调用的输入。

fillcolor(colorstring)

设置填充颜色为 colorstring 指定的 Tk 颜色描述字符串,例如 "red""yellow""#33cc8c"

fillcolor((r, g, b))

设置填充颜色为以 r, g, b 元组表示的 RGB 颜色。r, g, b 的取值范围应为 0..colormode,colormode 的值为 1.0 或 255 (参见 colormode())。

fillcolor(r, g, b)

设置填充颜色为 r, g, b 表示的 RGB 颜色。r, g, b 的取值范围应为 0..colormode。

如果 turtleshape 为多边形,该多边形内部也以新设置的填充颜色填充。

>>>

>>> turtle.fillcolor("violet")
>>> turtle.fillcolor()
'violet'
>>> turtle.pencolor()
(50.0, 193.0, 143.0)
>>> turtle.fillcolor((50, 193, 143))  # 整数,而非浮点数
>>> turtle.fillcolor()
(50.0, 193.0, 143.0)
>>> turtle.fillcolor('#ffffff')
>>> turtle.fillcolor()
(255.0, 255.0, 255.0)
turtle.
color
(
*args
)

返回或设置画笔颜色和填充颜色。

允许多种输入格式。使用如下 0 至 3 个参数:

color()

返回以一对颜色描述字符串或元组表示的当前画笔颜色和填充颜色,两者可分别由 pencolor()fillcolor() 返回。

color(colorstring),
color((r,g,b)),
color(r,g,b)

输入格式与 pencolor() 相同,同时设置填充颜色和画笔颜色为指定的值。

color(colorstring1, colorstring2),
color((r1,g1,b1), (r2,g2,b2))

相当于 pencolor(colorstring1)fillcolor(colorstring2),使用其他输入格式的方法也与之类似。

如果 turtleshape 为多边形,该多边形轮廓与填充也使用新设置的颜色。

>>>

>>> turtle.color("red", "green")
>>> turtle.color()
('red', 'green')
>>> color("#285078", "#a0c8f0")
>>> color()
((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))

另参见: Screen 方法 colormode()

填充

turtle.
filling
(
)

返回填充状态 (填充为 True,否则为 False)。

>>>

>>> turtle.begin_fill()
>>> if turtle.filling():
...    turtle.pensize(5)
... else:
...    turtle.pensize(3)
turtle.
begin_fill
(
)

在绘制要填充的形状之前调用。

turtle.
end_fill
(
)

填充上次调用 begin_fill() 之后绘制的形状。

自相交多边形或多个形状间的重叠区域是否填充取决于操作系统的图形引擎、重叠的类型以及重叠的层数。 例如上面的 Turtle 多芒星可能会全部填充为黄色,也可能会有一些白色区域。

>>>

>>> turtle.color("black", "red")
>>> turtle.begin_fill()
>>> turtle.circle(80)
>>> turtle.end_fill()

更多绘图控制

turtle.
reset
(
)

从屏幕中删除海龟的绘图,海龟回到原点并设置所有变量为默认值。

>>>

>>> turtle.goto(0,-22)
>>> turtle.left(100)
>>> turtle.position()
(0.00,-22.00)
>>> turtle.heading()
100.0
>>> turtle.reset()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
turtle.
clear
(
)

从屏幕中删除指定海龟的绘图。不移动海龟。海龟的状态和位置以及其他海龟的绘图不受影响。

turtle.
write
(
arg,
move=False,
align=‘left’,
font=(‘Arial’, 8, ‘normal’)
)
参数
:
  • arg — 要书写到 TurtleScreen 的对象

  • move — True/False

  • align — 字符串 “left”, “center” 或 “right”

  • font — 一个三元组 (fontname, fontsize, fonttype)

基于 align (“left”, “center” 或 “right”) 并使用给定的字体将文本 —— arg 的字符串表示形式 —— 写到当前海龟位置。 如果 move 为真值,画笔会移至文本的右下角。 默认情况下 moveFalse

>>>

>>> turtle.write("Home = ", True, align="center")
>>> turtle.write((0,0), True)

海龟状态

可见性

turtle.
hideturtle
(
)
turtle.
ht
(
)

使海龟不可见。当你绘制复杂图形时这是个好主意,因为隐藏海龟可显著加快绘制速度。

>>>

>>> turtle.hideturtle()
turtle.
showturtle
(
)
turtle.
st
(
)

使海龟可见。

>>>

>>> turtle.showturtle()
turtle.
isvisible
(
)

如果海龟显示返回 True,如果海龟隐藏返回 False

>>>

>>> turtle.hideturtle()
>>> turtle.isvisible()
False
>>> turtle.showturtle()
>>> turtle.isvisible()
True

外观

turtle.
shape
(
name=None
)
参数
:

name — 一个有效的形状名字符串

设置海龟形状为 name 指定的形状名,如未指定形状名则返回当前的形状名。name 指定的形状名应存在于 TurtleScreen 的 shape 字典中。多边形的形状初始时有以下几种: “arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”。要了解如何处理形状请参看 Screen 方法 register_shape()

>>>

>>> turtle.shape()
'classic'
>>> turtle.shape("turtle")
>>> turtle.shape()
'turtle'
turtle.
resizemode
(
rmode=None
)
参数
:

rmode — 字符串 “auto”, “user”, “noresize” 其中之一

设置大小调整模式为以下值之一: “auto”, “user”, “noresize”。如未指定 rmode 则返回当前的大小调整模式。不同的大小调整模式的效果如下:

  • “auto”: 根据画笔粗细值调整海龟的外观。

  • “user”: 根据拉伸因子和轮廓宽度 (outline) 值调整海龟的外观,两者是由 shapesize() 设置的。

  • “noresize”: 不调整海龟的外观大小。

resizemode("user") 会由 shapesize() 带参数使用时被调用。

>>>

>>> turtle.resizemode()
'noresize'
>>> turtle.resizemode("auto")
>>> turtle.resizemode()
'auto'
turtle.
shapesize
(
stretch_wid=None,
stretch_len=None,
outline=None
)
turtle.
turtlesize
(
stretch_wid=None,
stretch_len=None ,
outline=None
)
参数
:
  • stretch_wid — 正数值

  • stretch_len — 正数值

  • outline — 正数值

返回或设置画笔的属性 x/y 拉伸因子和/或轮廓。 设置大小调整模式为 “user”。 当且仅当大小调整模式为 “user” 时,海龟会基于其拉伸因子调整外观: stretch_wid 为垂直于其朝向的宽度拉伸因子,stretch_len 为平行于其朝向的长度拉伸因子,outline 决定形状轮廓线的宽度。

>>>

>>> turtle.shapesize()
(1.0, 1.0, 1)
>>> turtle.resizemode("user")
>>> turtle.shapesize(5, 5, 12)
>>> turtle.shapesize()
(5, 5, 12)
>>> turtle.shapesize(outline=8)
>>> turtle.shapesize()
(5, 5, 8)
turtle.
shearfactor
(
shear=None
)
参数
:

shear — 数值 (可选)

设置或返回当前的剪切因子。根据 share 指定的剪切因子即剪切角度的切线来剪切海龟形状。 改变海龟的朝向 (移动方向)。如未指定 shear 参数: 返回当前的剪切因子即剪切角度的切线,与海龟朝向平行的线条将被剪切。

>>>

>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.shearfactor(0.5)
>>> turtle.shearfactor()
0.5
turtle.
tilt
(
angle
)
参数
:

angle — 一个数值

海龟形状自其当前的倾角转动 angle 指定的角度,但 改变海龟的朝向 (移动方向)。

>>>

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(30)
>>> turtle.fd(50)
>>> turtle.tilt(30)
>>> turtle.fd(50)
turtle.
tiltangle
(
angle=None
)
参数
:

angle — 一个数值 (可选)

设置或返回当前的倾角。如果指定 angle 则旋转海龟形状使其指向 angle 指定的方向,忽略其当前的倾角。 改变海龟的朝向 (移动方向)。如果未指定 angle: 返回当前的倾角,即海龟形状的方向和海龟朝向 (移动方向) 之间的夹角。

>>>

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(45)
>>> turtle.tiltangle()
45.0
turtle.
shapetransform
(
t11=None,
t12=None,
t21=None,
t22=None
)
参数
:
  • t11 — 一个数值 (可选)

  • t12 — 一个数值 (可选)

  • t21 — 一个数值 (可选)

  • t12 — 一个数值 (可选)

设置或返回海龟形状的当前变形矩阵。

如未指定任何矩阵元素,则返回以 4 元素元组表示的变形矩阵。 否则就根据设置指定元素的矩阵来改变海龟形状,矩阵第一排的值为 t11, t12 而第二排的值为 t21, t22。 行列式 t11 * t22 – t12 * t21 必须不为零,否则会引发错误。 根据指定矩阵修改拉伸因子 stretchfactor, 剪切因子 shearfactor 和倾角 tiltangle。

>>>

>>> turtle = Turtle()
>>> turtle.shape("square")
>>> turtle.shapesize(4,2)
>>> turtle.shearfactor(-0.5)
>>> turtle.shapetransform()
(4.0, -1.0, -0.0, 2.0)
turtle.
get_shapepoly
(
)

返回以坐标值对元组表示的当前形状多边形。这可以用于定义一个新形状或一个复合形状的多个组成部分。

>>>

>>> turtle.shape("square")
>>> turtle.shapetransform(4, -1, 0, 2)
>>> turtle.get_shapepoly()
((50, -20), (30, 20), (-50, 20), (-30, -20))

使用事件

turtle.
onclick
(
fun,
btn=1,
add=None
)
参数
:
  • fun — 一个函数,调用时将传入两个参数表示在画布上点击的坐标。

  • btn — 鼠标按钮编号,默认值为 1 (鼠标左键)

  • addTrueFalse — 如为 True 则将添加一个新绑定,否则将取代先前的绑定

fun 指定的函数绑定到鼠标点击此海龟事件。如果 fun 值为 None,则移除现有的绑定。以下为使用匿名海龟即过程式的示例:

>>>

>>> def turn(x, y):
...     left(180)
...
>>> onclick(turn)  # 现在点击海龟将使其转向。
>>> onclick(None)  # 事件绑定将被移除
turtle.
onrelease
(
fun,
btn=1,
add=None
)
参数
:
  • fun — 一个函数,调用时将传入两个参数表示在画布上点击的坐标。

  • btn — 鼠标按钮编号,默认值为 1 (鼠标左键)

  • addTrueFalse — 如为 True 则将添加一个新绑定,否则将取代先前的绑定

fun 指定的函数绑定到在此海龟上释放鼠标按键事件。如果 fun 值为 None,则移除现有的绑定。

>>>

>>> class MyTurtle(Turtle):
...     def glow(self,x,y):
...         self.fillcolor("red")
...     def unglow(self,x,y):
...         self.fillcolor("")
...
>>> turtle = MyTurtle()
>>> turtle.onclick(turtle.glow)     # 点击turtle会将填充颜色设置为红色。
>>> turtle.onrelease(turtle.unglow) # 释放会使它变得透明
turtle.
ondrag
(
fun,
btn=1,
add=None
)
参数
:
  • fun — 一个函数,调用时将传入两个参数表示在画布上点击的坐标。

  • btn — 鼠标按钮编号,默认值为 1 (鼠标左键)

  • addTrueFalse — 如为 True 则将添加一个新绑定,否则将取代先前的绑定

fun 指定的函数绑定到在此海龟上移动鼠标事件。如果 fun 值为 None,则移除现有的绑定。

注: 在海龟上移动鼠标事件之前应先发生在此海龟上点击鼠标事件。

>>>

>>> turtle.ondrag(turtle.goto)

在此之后点击并拖动海龟可在屏幕上手绘线条 (如果画笔为落下)。

特殊海龟方法

turtle.
begin_poly
(
)

开始记录多边形的顶点。当前海龟位置为多边形的第一个顶点。

turtle.
end_poly
(
)

停止记录多边形的顶点。当前海龟位置为多边形的最后一个顶点。它将连线到第一个顶点。

turtle.
get_poly
(
)

返回最新记录的多边形。

>>>

>>> turtle.home()
>>> turtle.begin_poly()
>>> turtle.fd(100)
>>> turtle.left(20)
>>> turtle.fd(30)
>>> turtle.left(60)
>>> turtle.fd(50)
>>> turtle.end_poly()
>>> p = turtle.get_poly()
>>> register_shape("myFavouriteShape", p)
turtle.
clone
(
)

创建并返回海龟的克隆体,具有相同的位置、朝向和海龟属性。

>>>

>>> mick = Turtle()
>>> joe = mick.clone()
turtle.
getturtle
(
)
turtle.
getpen
(
)

返回海龟对象自身。唯一合理的用法: 作为一个函数来返回 “匿名海龟”:

>>>

>>> pet = getturtle()
>>> pet.fd(50)
>>> pet
<turtle.Turtle object at 0x...>
turtle.
getscreen
(
)

返回作为海龟绘图场所的 TurtleScreen 类对象。该对象将可调用 TurtleScreen 方法。

>>>

>>> ts = turtle.getscreen()
>>> ts
<turtle._Screen object at 0x...>
>>> ts.bgcolor("pink")
turtle.
setundobuffer
(
size
)
参数
:

size — 一个整型数值或 None

设置或禁用撤销缓冲区。 如果 size 为整数,则开辟一个给定大小的空撤销缓冲区。 size 给出了可以通过 undo() 方法/函数撤销海龟动作的最大次数。 如果 sizeNone,则禁用撤销缓冲区。

>>>

>>> turtle.setundobuffer(42)
turtle.
undobufferentries
(
)

返回撤销缓冲区里的条目数。

>>>

>>> while undobufferentries():
...     undo()

复合形状

要使用由多个不同颜色多边形构成的复合海龟形状,你必须明确地使用辅助类 Shape,具体步骤如下:

  1. 创建一个空 Shape 对象,类型为 “compound”。

  2. 可根据需要使用 addcomponent() 方法向此对象添加多个组件。

    例如:

    >>>

    >>> s = Shape("compound")
    >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))
    >>> s.addcomponent(poly1, "red", "blue")
    >>> poly2 = ((0,0),(10,-5),(-10,-5))
    >>> s.addcomponent(poly2, "blue", "red")
    
  3. 接下来将 Shape 对象添加到 Screen 对象的形状列表并使用它:

    >>>

    >>> register_shape("myshape", s)
    >>> shape("myshape")
    

备注

Shape 类在 register_shape() 方法的内部以多种方式使用。应用程序编写者 只有 在使用上述的复合形状时才需要处理 Shape 类。

TurtleScreen/Screen 方法及对应函数

本节中的大部分示例都使用 TurtleScreen 类的一个实例,命名为 screen

窗口控制

turtle.
bgcolor
(
*args
)
参数
:

args — 一个颜色字符串或三个取值范围 0..colormode 内的数值或一个取值范围相同的数值3元组

设置或返回 TurtleScreen 的背景颜色。

>>>

>>> screen.bgcolor("orange")
>>> screen.bgcolor()
'orange'
>>> screen.bgcolor("#800080")
>>> screen.bgcolor()
(128.0, 0.0, 128.0)
turtle.
bgpic
(
picname=None
)
参数
:

picname — 一个字符串, gif-文件名, "nopic", 或 None

设置背景图片或返回当前背景图片名称。如果 picname 为一个文件名,则将相应图片设为背景。如果 picname"nopic",则删除当前背景图片。如果 picnameNone,则返回当前背景图片文件名。:

>>>

>>> screen.bgpic()
'nopic'
>>> screen.bgpic("landscape.gif")
>>> screen.bgpic()
"landscape.gif"
turtle.
clear
(
)

备注

此 TurtleScreen 方法作为全局函数时只有一个名字 clearscreen。全局函数 clear 所对应的是 Turtle 方法 clear

turtle.
clearscreen
(
)

从中删除所有海龟的全部绘图。将已清空的 TurtleScreen 重置为初始状态: 白色背景,无背景片,无事件绑定并启用追踪。

turtle.
reset
(
)

备注

此 TurtleScreen 方法作为全局函数时只有一个名字 resetscreen。全局函数 reset 所对应的是 Turtle 方法 reset

turtle.
resetscreen
(
)

重置屏幕上的所有海龟为其初始状态。

turtle.
screensize
(
canvwidth=None,
canvheight=None,
bg=None
)
参数
:
  • canvwidth — 正整型数,以像素表示画布的新宽度值

  • canvheight — 正整型数,以像素表示画面的新高度值

  • bg — 颜色字符串或颜色元组,新的背景颜色

如未指定任何参数,则返回当前的 (canvaswidth, canvasheight)。否则改变作为海龟绘图场所的画布大小。不改变绘图窗口。要观察画布的隐藏区域,可以使用滚动条。通过此方法可以令之前绘制于画布之外的图形变为可见。

>>>

>>> screen.screensize()
(400, 300)
>>> screen.screensize(2000,1500)
>>> screen.screensize()
(2000, 1500)

也可以用来寻找意外逃走的海龟 ;-)

turtle.
setworldcoordinates
(
llx,
lly,
urx,
ury
)
参数
:
  • llx — 一个数值, 画布左下角的 x-坐标

  • lly — 一个数值, 画布左下角的 y-坐标

  • urx — 一个数值, 画面右上角的 x-坐标

  • ury — 一个数值, 画布右上角的 y-坐标

设置用户自定义坐标系并在必要时切换模式为 “world”。这会执行一次 screen.reset()。如果 “world” 模式已激活,则所有图形将根据新的坐标系重绘。

注意: 在用户自定义坐标系中,角度可能显得扭曲。

>>>

>>> screen.reset()
>>> screen.setworldcoordinates(-50,-7.5,50,7.5)
>>> for _ in range(72):
...     left(10)
...
>>> for _ in range(8):
...     left(45); fd(2)   # 一个正八边形

动画控制

turtle.
delay
(
delay=None
)
参数
:

delay — 正整型数

设置或返回以毫秒数表示的延迟值 delay。(这约等于连续两次画布刷新的间隔时间。) 绘图延迟越长,动画速度越慢。

可选参数:

>>>

>>> screen.delay()
10
>>> screen.delay(5)
>>> screen.delay()
5
turtle.
tracer
(
n=None,
delay=None
)
参数
:
  • n — 非负整型数

  • delay — 非负整型数

启用/禁用海龟动画并设置刷新图形的延迟时间。如果指定 n 值,则只有每第 n 次屏幕刷新会实际执行。(可被用来加速复杂图形的绘制。) 如果调用时不带参数,则返回当前保存的 n 值。第二个参数设置延迟值 (参见 delay())。

>>>

>>> screen.tracer(8, 25)
>>> dist = 2
>>> for i in range(200):
...     fd(dist)
...     rt(90)
...     dist += 2
turtle.
update
(
)

执行一次 TurtleScreen 刷新。在禁用追踪时使用。

另参见 RawTurtle/Turtle 方法 speed()

使用屏幕事件

turtle.
listen
(
xdummy=None,
ydummy=None
)

设置焦点到 TurtleScreen (以便接收按键事件)。使用两个 Dummy 参数以便能够传递 listen() 给 onclick 方法。

turtle.
onkey
(
fun,
key
)
turtle.
onkeyrelease
(
fun,
key
)
参数
:
  • fun — 一个无参数的函数或 None

  • key — 一个字符串: 键 (例如 “a”) 或键标 (例如 “space”)

绑定 fun 指定的函数到按键释放事件。如果 fun 值为 None,则移除事件绑定。注: 为了能够注册按键事件,TurtleScreen 必须得到焦点。(参见 method listen() 方法。)

>>>

>>> def f():
...     fd(50)
...     lt(60)
...
>>> screen.onkey(f, "Up")
>>> screen.listen()
turtle.
onkeypress
(
fun,
key=None
)
参数
:
  • fun — 一个无参数的函数或 None

  • key — 一个字符串: 键 (例如 “a”) 或键标 (例如 “space”)

绑定 fun 指定的函数到指定键的按下事件。如未指定键则绑定到任意键的按下事件。注: 为了能够注册按键事件,必须得到焦点。(参见 listen() 方法。)

>>>

>>> def f():
...     fd(50)
...
>>> screen.onkey(f, "Up")
>>> screen.listen()
turtle.
onclick
(
fun,
btn=1,
add=None
)
turtle.
onscreenclick
(
fun,
btn=1 ,
add=None
)
参数
:
  • fun — 一个函数,调用时将传入两个参数表示在画布上点击的坐标。

  • btn — 鼠标按钮编号,默认值为 1 (鼠标左键)

  • addTrueFalse — 如为 True 则将添加一个新绑定,否则将取代先前的绑定

绑定 fun 指定的函数到鼠标点击屏幕事件。如果 fun 值为 None,则移除现有的绑定。

以下示例使用一个 TurtleScreen 实例 screen 和一个 Turtle 实例 turtle:

>>>

>>> screen.onclick(turtle.goto) # 后续对 TurtleScreen 的点击
>>>                             # 将使海龟移至被点击的位置。
>>> screen.onclick(None)        # 再次移除事件绑定

备注

此 TurtleScreen 方法作为全局函数时只有一个名字 onscreenclick。全局函数 onclick 所对应的是 Turtle 方法 onclick

turtle.
ontimer
(
fun,
t=0
)
参数
:
  • fun — 一个无参数的函数

  • t — 一个数值 >= 0

安装一个计时器,在 t 毫秒后调用 fun 函数。

>>>

>>> running = True
>>> def f():
...     if running:
...         fd(50)
...         lt(60)
...         screen.ontimer(f, 250)
>>> f()   ### 让海龟随意前进
>>> running = False
turtle.
mainloop
(
)
turtle.
done
(
)

开始事件循环 – 调用 Tkinter 的 mainloop 函数。必须作为一个海龟绘图程序的结束语句。如果一个脚本是在以 -n 模式 (无子进程) 启动的 IDLE 中运行时 不可 使用 – 用于实现海龟绘图的交互功能。:

>>>

>>> screen.mainloop()

输入方法

turtle.
textinput
(
title,
prompt
)
参数
:
  • title — string

  • prompt — string

弹出一个对话框窗口用来输入一个字符串。形参 title 为对话框窗口的标题,prompt 为一条文本,通常用来提示要输入什么信息。返回输入的字符串。如果对话框被取消则返回 None。:

>>>

>>> screen.textinput("NIM", "Name of first player:")
turtle.
numinput
(
title,
prompt,
default=None,
minval=None,
maxval=None
)
参数
:
  • title — string

  • prompt — string

  • default — 数值 (可选)

  • minval — 数值 (可选)

  • maxval — 数值 (可选)

弹出一个用于输入数值的对话框窗口。 title 是对话框窗口的标题,prompt 是通常用来描述要输入的数字信息的文本。 default: 默认值, minval: 可输入的最小值, maxval: 可输入的最大值。 如果给出 minval .. maxval 则输入的数值必须在此范围以内。 如未给出,则将发出提示并且让话框保持打开以便修正。 返回输入的数值。 如果对话框被取消,则返回 None

>>>

>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)

设置与特殊方法

turtle.
mode
(
mode=None
)
参数
:

mode — 字符串 “standard”, “logo” 或 “world” 其中之一

设置海龟模式 (“standard”, “logo” 或 “world”) 并执行重置。如未指定模式则返回当前的模式。

“standard” 模式与旧的 turtle 兼容。”logo” 模式与大部分 Logo 海龟绘图兼容。”world” 模式使用用户自定义的 “世界坐标系”。注意: 在此模式下,如果 x/y 单位比率不等于 1 则角度会显得扭曲。

模式

初始海龟朝向

正数角度

“standard”

朝右 (东)

逆时针

“logo”

朝上 (北)

顺时针

>>>

>>> mode("logo")   # 将海龟重置为朝向北方
>>> mode()
'logo'
turtle.
colormode
(
cmode=None
)
参数
:

cmode — 数值 1.0 或 255 其中之一

返回 colormode 或将其设为 1.0 或 255。 后续表示三原色的 r, g, b 值必须在 0..*cmode* 范围之内。

>>>

>>> screen.colormode(1)
>>> turtle.pencolor(240, 160, 80)
Traceback (most recent call last):
     ...
TurtleGraphicsError: bad color sequence: (240, 160, 80)
>>> screen.colormode()
1.0
>>> screen.colormode(255)
>>> screen.colormode()
255
>>> turtle.pencolor(240,160,80)
turtle.
getcanvas
(
)

返回此 TurtleScreen 的 Canvas 对象。供了解 Tkinter 的 Canvas 对象内部机理的人士使用。

>>>

>>> cv = screen.getcanvas()
>>> cv
<turtle.ScrolledCanvas object ...>
turtle.
getshapes
(
)

返回所有当前可用海龟形状的列表。

>>>

>>> screen.getshapes()
['arrow', 'blank', 'circle', ..., 'turtle']
turtle.
register_shape
(
name,
shape=None
)
turtle.
addshape
(
name,
shape=None
)

调用此函数有三种不同方式:

  1. name 为一个 gif 文件的文件名, shapeNone: 安装相应的图像形状。:

    >>>

    >>> screen.register_shape("turtle.gif")
    

    备注

    当海龟转向时图像形状 不会 转动,因此无法显示海龟的朝向!

  2. name 为指定的字符串,shape 为由坐标值对构成的元组: 安装相应的多边形形状。

    >>>

    >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
    
  3. name 为任意字符串而 shape 为 (复合) Shape 对象:安装相应的复合形状。Install the corresponding compound shape.

将一个海龟形状加入 TurtleScreen 的形状列表。只有这样注册过的形状才能通过执行 shape(shapename) 命令来使用。

turtle.
turtles
(
)

返回屏幕上的海龟列表。

>>>

>>> for turtle in screen.turtles():
...     turtle.color("red")
turtle.
window_height
(
)

返回海龟窗口的高度。:

>>>

>>> screen.window_height()
480
turtle.
window_width
(
)

返回海龟窗口的宽度。:

>>>

>>> screen.window_width()
640

Screen 专有方法, 而非继承自 TurtleScreen

turtle.
bye
(
)

关闭海龟绘图窗口。

turtle.
exitonclick
(
)

bye() 方法绑定到 Screen 上的鼠标点击事件。

如果配置字典中 “using_IDLE” 的值为 False (默认值) 则同时进入主事件循环。注: 如果启动 IDLE 时使用了 -n 开关 (无子进程),turtle.cfg 中此数值应设为 True 。在此情况下 IDLE 本身的主事件循环同样会作用于客户脚本。

turtle.
setup
(
width=_CFG[‘width’],
height=_CFG[‘height’],
startx=_CFG[‘leftright’],
starty=_CFG[‘topbottom’]
)

设置主窗口的大小和位置。默认参数值保存在配置字典中,可通过 turtle.cfg 文件进行修改。

参数
:
  • width — 如为一个整型数值,表示大小为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 50%

  • height — 如为一个整型数值,表示高度为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 75%

  • startx — 如为正值,表示初始位置距离屏幕左边缘多少像素,负值表示距离右边缘,None 表示窗口水平居中

  • starty — 如为正值,表示初始位置距离屏幕上边缘多少像素,负值表示距离下边缘,None 表示窗口垂直居中

>>>

>>> screen.setup (width=200, height=200, startx=0, starty=0)
>>>              # 设置窗口为 200x200 像素,位于屏幕左上角
>>> screen.setup(width=.75, height=0.5, startx=None, starty=None)
>>>              # 设置窗口宽度为屏幕的 75% 高度为屏幕的 50% 并居中
turtle.
title
(
titlestring
)
参数
:

titlestring — 一个字符串,显示为海龟绘图窗口的标题栏文本

设置海龟窗口标题为 titlestring 指定的文本。

>>>

>>> screen.title("Welcome to the turtle zoo!")

公共类

class
turtle.
RawTurtle
(
canvas
)
class
turtle.
RawPen
(
canvas
)
参数
:

canvas — 一个 tkinter.Canvas, ScrolledCanvasTurtleScreen

创建一个海龟。海龟对象具有 “Turtle/RawTurtle 方法” 一节所述的全部方法。

class
turtle.
Turtle

RawTurtle 的子类,具有相同的接口,但其绘图场所为默认的 Screen 类对象,在首次使用时自动创建。

class
turtle.
TurtleScreen
(
cv
)
参数
:

cv — 一个 tkinter.Canvas

提供面向屏幕的方法如 bgcolor() 等。 说明见上文。

class
turtle.
Screen

TurtleScreen 的子类,增加了四个方法.

class
turtle.
ScrolledCanvas
(
master
)
参数
:

master — 可容纳 ScrolledCanvas 的 Tkinter 部件,即添加了滚动条的 Tkinter-canvas

由 Screen 类使用,使其能够自动提供一个 ScrolledCanvas 作为海龟的绘图场所。

class
turtle.
Shape
(
type_,
data
)
参数
:

type_ — 字符串 “polygon”, “image”, “compound” 其中之一

实现形状的数据结构。(type_, data) 必须遵循以下定义:

type_

data

“polygon”

一个多边形元组,即由坐标值对构成的元组

“image”

一个图片 (此形式仅限内部使用!)

“compound”

None (复合形状必须使用 addcomponent() 方法来构建)

addcomponent
(
poly,
fill,
outline=None
)
参数
:
  • poly — 一个多边形,即由数值对构成的元组

  • fill — 一种颜色,将用来填充 poly 指定的多边形

  • outline — 一种颜色,用于多边形的轮廓 (如有指定)

示例:

>>>

>>> poly = ((0,0),(10,-5),(0,10),(-10,-5))
>>> s = Shape("compound")
>>> s.addcomponent(poly, "red", "blue")
>>> # ... 添加更多组件,然后使用 register_shape()

参见 复合形状

class
turtle.
Vec2D
(
x,
y
)

一个二维矢量类,用来作为实现海龟绘图的辅助类。也可能在海龟绘图程序中使用。派生自元组,因此矢量也属于元组!

提供的运算 (a, b 为矢量, k 为数值):

  • a + b 矢量加法

  • a - b 矢量减法

  • a * b 内积

  • k * aa * k 与标量相乘

  • abs(a) a 的绝对值

  • a.rotate(angle) 旋转

说明

海龟对象在屏幕对象上绘图,在 turtle 的面向对象接口中有许多关键的类可被用于创建它们并将它们相互关联。

Turtle 实例将自动创建一个 Screen 实例,如果它还未创建的话。

TurtleRawTurtle 的子类,它 不会 自动创建绘图区域 —— 需要为其提供或创建一个 canvascanvas 可以是一个 tkinter.Canvas, ScrolledCanvas TurtleScreen

TurtleScreen 是基本的海龟绘图区域。 ScreenTurtleScreen 的子类,并包括 一些额外方法 用来管理其外观(包括大小和标题)及行为。 TurtleScreen 的构造器需要一个 tkinter.CanvasScrolledCanvas 作为参数。

海龟绘图形的函数式接口使用 TurtleTurtleScreen/Screen 的各种方法。 在下层,每当从 Screen 方法派生的函数被调用时就会自动创建一个屏幕对象。 同样地,每当从 Turtle 方法派生的函数被调用时也都会自动创建一个 Turtle 对象。

要在一个屏幕中使用多个海龟,就必须使用面向对象的接口。

帮助与配置

如何使用帮助

Screen 和 Turtle 类的公用方法以文档字符串提供了详细的文档。因此可以利用 Python 帮助工具获取这些在线帮助信息:

  • 当使用 IDLE 时,输入函数/方法调用将弹出工具提示显示其签名和文档字符串的头几行。

  • 对文法或函数调用 help() 将显示其文档字符串:

    >>>

    >>> help(Screen.bgcolor)
    Help on method bgcolor in module turtle:
    
    bgcolor(self, *args) unbound turtle.Screen method
        Set or return backgroundcolor of the TurtleScreen.
    
        Arguments (if given): a color string or three numbers
        in the range 0..colormode or a 3-tuple of such numbers.
    
    
        >>> screen.bgcolor("orange")
        >>> screen.bgcolor()
        "orange"
        >>> screen.bgcolor(0.5,0,0.5)
        >>> screen.bgcolor()
        "#800080"
    
    >>> help(Turtle.penup)
    Help on method penup in module turtle:
    
    penup(self) unbound turtle.Turtle method
        Pull the pen up -- no drawing when moving.
    
        Aliases: penup | pu | up
    
        No argument
    
        >>> turtle.penup()
    
  • 方法对应函数的文档字符串的形式会有一些修改:

    >>>

    >>> help(bgcolor)
    Help on function bgcolor in module turtle:
    
    bgcolor(*args)
        Set or return backgroundcolor of the TurtleScreen.
    
        Arguments (if given): a color string or three numbers
        in the range 0..colormode or a 3-tuple of such numbers.
    
        Example::
    
          >>> bgcolor("orange")
          >>> bgcolor()
          "orange"
          >>> bgcolor(0.5,0,0.5)
          >>> bgcolor()
          "#800080"
    
    >>> help(penup)
    Help on function penup in module turtle:
    
    penup()
        Pull the pen up -- no drawing when moving.
    
        Aliases: penup | pu | up
    
        No argument
    
        Example:
        >>> penup()
    

这些修改版文档字符串是在导入时与方法对应函数的定义一起自动生成的。

文档字符串翻译为不同的语言

可使用工具创建一个字典,键为方法名,值为 Screen 和 Turtle 类公共方法的文档字符串。

turtle.
write_docstringdict
(
filename=‘turtle_docstringdict’
)
参数
:

filename — 一个字符串,表示文件名

创建文档字符串字典并将其写入 filename 指定的 Python 脚本文件。此函数必须显示地调用 (海龟绘图类并不使用此函数)。文档字符串字典将被写入到 Python 脚本文件 filename.py。该文件可作为模板用来将文档字符串翻译为不同语言。

如果你 (或你的学生) 想使用本国语言版本的 turtle 在线帮助,你必须翻译文档字符串并保存结果文件,例如 turtle_docstringdict_german.py .

如果你在 turtle.cfg 文件中加入了相应的条目,此字典将在导入模块时被读取并替代原有的英文版文档字符串。

在撰写本文档时已经有了德语和意大利语版的文档字符串字典。(更多需求请联系 glingl@aon.at)

如何配置 Screen 和 Turtle

内置的默认配置是模仿旧 turtle 模块的外观和行为,以便尽可能地与其保持兼容。

如果你想使用不同的配置,以便更好地反映此模块的特性或是更适合你的需求,例如在课堂中使用,你可以准备一个配置文件 turtle.cfg,该文件将在导入模块时被读取并根据其中的设定修改模块配置。

内置的配置对应了下面的 turtle.cfg:

width = 0.5
height = 0.75
leftright = None
topbottom = None
canvwidth = 400
canvheight = 300
mode = standard
colormode = 1.0
delay = 10
undobuffersize = 1000
shape = classic
pencolor = black
fillcolor = black
resizemode = noresize
visible = True
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = False

选定条目的简短说明:

  • 开头的四行对应了 Screen.setup 方法的参数。

  • 第 5 和第 6 行对应于 Screen.screensize 方法的参数。

  • shape 可以是任何内置形状,即: arrow, turtle 等。更多信息可用 help(shape) 查看。

  • 如果你想使用无填充色(即让海龟变透明),则你必须写 fillcolor = "" (但在but all nonempty strings must not have quotes in the cfg 文件中所有非空字符串都不可加引号)。

  • 如果你想令海龟反映其状态,你必须使用 resizemode = auto

  • 例如当你设置了 language = italian 则文档字符串字典 turtle_docstringdict_italian.py 将在导入时被加载(如果它存在于导入路径,即与 turtle 相同的目录中)。

  • exampleturtleexamplescreen 条目定义了相应对象在文档字符串中显示的名称。方法文档字符串转换为函数文档字符串时将从文档字符串中删去这些名称。

  • using_IDLE: 如果你经常使用 IDLE 及其 -n 开关选项(”无子进程”)则将此项设为 True。 这将阻止 exitonclick() 进入主事件循环。

turtle.cfg 文件可以保存于 turtle 所在目录,当前工作目录也可以有一个同名文件。后者会重载覆盖前者的设置。

Lib/turtledemo 目录中也有一个 turtle.cfg 文件。你可以将其作为示例进行研究,并在运行演示时查看其作用效果 (但最好不要在演示查看器中运行)。

turtledemo — 演示脚本集

turtledemo 包汇集了一组演示脚本。这些脚本可以通过以下命令打开所提供的演示查看器运行和查看:

python -m turtledemo

此外,你也可以单独运行其中的演示脚本。例如,:

python -m turtledemo.bytedesign

turtledemo 包目录中的内容:

  • 一个演示查看器 __main__.py,可用来查看脚本的源码并即时运行。

  • 多个脚本文件,演示 turtle 模块的不同特性。所有示例可通过 Examples 菜单打开。也可以单独运行每个脚本。

  • 一个 turtle.cfg 文件,作为说明如何编写并使用模块配置文件的示例模板。

演示脚本清单如下:

名称

描述

相关特性

bytedesign

复杂的传统海龟绘图模式

tracer(), delay, update()

chaos

绘制 Verhulst 动态模型,演示通过计算机的运算可能会生成令人惊叹的结果

世界坐标系

clock

绘制模拟时钟显示本机的当前时间

海龟作为表针, ontimer

colormixer

试验 r, g, b 颜色模式

ondrag() 当鼠标拖动

forest

绘制 3 棵广度优先树

随机化

fractalcurves

绘制 Hilbert & Koch 曲线

递归

lindenmayer

文化数学 (印度装饰艺术)

L-系统

minimal_hanoi

汉诺塔

矩形海龟作为汉诺盘 (shape, shapesize)

nim

玩经典的“尼姆”游戏,开始时有三堆小棒,与电脑对战。

海龟作为小棒,事件驱动 (鼠标, 键盘)

paint

超极简主义绘画程序

onclick() 当鼠标点击

peace

初级技巧

海龟: 外观与动画

penrose

非周期性地使用风筝和飞镖形状铺满平面

stamp() 印章

planet_and_moon

模拟引力系统

复合开关, Vec2D

rosette

一个来自介绍海龟绘图的维基百科文章的图案

clone(), undo()

round_dance

两两相对并不断旋转舞蹈的海龟

复合形状, clone shapesize, tilt, get_shapepoly, update

sorting_animate

动态演示不同的排序方法

简单对齐, 随机化

tree

一棵 (图形化的) 广度优先树 (使用生成器)

clone() 克隆

two_canvases

简单设计

两块画布上的海龟

yinyang

另一个初级示例

circle() 画圆

祝你玩得开心!

Python 2.6 之后的变化

  • Turtle.tracer, Turtle.window_width Turtle.window_height 等方法已被去除。 具有这些名称和功能的方法现在只限于作为 Screen 的方法。 自这些方法派生的函数仍保持可用。 (实际上在 Python 2.6 中这些方法就已经只是对应 TurtleScreen/Screen 方法的副本了。)

  • Turtle.fill() 方法已被去除。 begin_fill()end_fill() 的行为则有细微改变:现在每个填充过程必须以一个 end_fill() 调用来结束。

  • 增加了一个 Turtle.filling 方法。 该方法返回一个布尔值:如果填充过程正在运行则为 True,否则为 False 。 此行为对应于 Python 2.6 中一个不带参数的 fill() 调用。

Python 3.0 之后的变化

  • 增加了 Turtle 方法 shearfactor() , shapetransform()get_shapepoly()。 这样就可以使用所有的常规线性变换来改变海龟形状。 tiltangle() 的功能已得到加强:现在它可以被用来获取或设置倾斜角度。

  • 增加了 Screen 方法 onkeypress() 作为 onkey() 的补充。 当后者将动作绑定到松开按键事件时,还将为它添加一个别名: onkeyrelease()

  • 增加了 Screen.mainloop 方法,这样在操作 ScreenTurtle 对象时就无需再使用单独的 mainloop() 函数。

  • 增加了两个输入方法: Screen.textinputScreen.numinput。 这两个方法会弹出输入对话框接受输入并分别返回字符串和数字。 These pop up input dialogs and return strings and numbers respectively.

  • 两个新的示例脚本 tdemo_nim.pytdemo_round_dance.py 被加入到 Lib/turtledemo 目录中。

Cursor AI:革命性的AI编程助手,重塑传统开发模式

thbcm阅读(209)

在当今科技飞速发展的时代,一款名为Cursor AI的智能编程助手正在悄然改变软件开发的面貌。这款融合了人工智能技术的代码编辑器,不仅继承了Visual Studio Code的强大功能,还加入了尖端的AI技术,成为程序员的得力助手。让我们一起深入了解这个正在重塑编程体验的革命性工具。

智能编程新纪元:全面解析Cursor AI

从VS Code到AI助手:Cursor AI的进化之路

Cursor AI的诞生,标志着编程工具迈入了全新的智能时代。它在保留VS Code优秀界面和功能的基础上,巧妙地融入了先进的AI技术。这种结合不仅让Cursor AI保持了熟悉的操作体验,还为开发者带来了前所未有的智能辅助。想象一下,你拥有一个既懂编程又精通多种编程语言的AI助手,它不仅能帮你写代码,还能理解你的需求,甚至预测你的下一步操作。这就是Cursor AI带来的革命性体验。

核心功能大揭秘:智能编码背后的AI魔力

Cursor AI的核心魔力源自其强大的AI引擎。它利用GPT-4、Claude 3.5等大型语言模型,提供了一系列令人惊叹的功能:

  1. 智能代码生成与补全:仿佛有了一个懂你心意的编程搭档,Cursor AI能根据上下文自动补全代码,甚至可以根据你的自然语言描述生成完整的代码片段。
  2. 自然语言交互:你可以用日常对话的方式与Cursor AI沟通,描述你的需求,它就能理解并转化为相应的代码。这个功能特别适合编程新手,大大降低了入门门槛。
  3. 实时反馈与调试:Cursor AI就像一个尽职尽责的代码审查员,实时分析你的代码,指出潜在问题,并给出改进建议。它不仅能发现语法错误,还能提供性能优化的建议.
  4. 多语言支持与项目整合:无论你是Python爱好者、JavaScript大神还是Java专家,Cursor AI都能成为你的得力助手。它支持多种主流编程语言,并能深入理解整个项目结构,提供全局性的支持.

多语言支持与团队协作:Cursor AI的全能表现

在当今复杂的软件开发环境中,Cursor AI展现出了惊人的适应能力。它不仅精通多种编程语言,还能深度理解整个代码库,提供上下文感知的智能建议。这意味着,无论你是在编写前端JavaScript,还是在调试后端Python代码,Cursor AI都能给出恰到好处的帮助。更令人惊喜的是,Cursor AI在团队协作方面也表现出色。它支持多文件处理和实时协作功能,让团队成员可以无缝地在同一个项目中工作。想象一下,当你在编写一个复杂的函数时,Cursor AI不仅能提供代码建议,还能智能地引用团队其他成员编写的相关模块,这无疑大大提高了团队的整体效率.

Cursor AI实战应用:从入门到精通

新手福音:自然语言编程让coding不再难

对于编程新手来说,Cursor AI无疑是一个福音。它的自然语言编程功能,让编码变得像日常对话一样简单。例如,你可以告诉Cursor AI:”我需要一个函数来计算圆的面积“,它就能立即生成相应的代码。这种方式不仅降低了学习门槛,也加快了学习进度。一位刚接触编程的大学生分享道:”使用Cursor AI后,我感觉自己的编程技能突飞猛进。它就像一个随时待命的编程导师,帮我解决各种疑难杂症.

提升开发效率:Cursor AI助力复杂项目管理

对于经验丰富的开发者来说,Cursor AI则是提升效率的利器。在处理大型复杂项目时,Cursor AI的智能代码补全和上下文感知功能尤其有用。它能快速理解项目结构,提供准确的代码建议,甚至预测你的下一步操作。一位资深后端工程师表示:”Cursor AI极大地提高了我的工作效率。特别是在处理legacy code时,它能快速理解代码逻辑,帮我定位问题,这节省了大量时间.

安全与隐私:Cursor AI如何保护你的代码资产

在享受便利的同时,安全和隐私问题自然是开发者最关心的。Cursor AI在这方面做出了令人满意的表现。它提供了隐私模式,确保用户的代码不会被存储或泄露。此外,Cursor AI还通过了SOC 2认证,这意味着它在数据安全和隐私保护方面达到了行业标准。”作为一家处理敏感数据的金融科技公司,我们对工具的安全性要求很高。Cursor AI的隐私保护措施让我们可以放心使用它的强大功能,而不必担心数据泄露风险。“一位金融科技公司的CTO如是说.

点击《Cursor AI中文教程》免费学习。

未来已来:Cursor AI引领编程新趋势

AI编程助手的市场格局:Cursor AI的独特优势

在AI编程助手市场中,Cursor AI凭借其独特的功能组合和用户友好的界面,正迅速崭露头角。与其他同类产品相比,Cursor AI的优势在于:

  1. 深度整合VS Code生态系统,降低用户学习成本
  2. 强大的自然语言处理能力,支持更自然的人机交互
  3. 灵活的AI模型选择,满足不同用户的需求
  4. 完善的团队协作功能,适应现代软件开发流程

这些特点使Cursor AI在竞争激烈的市场中脱颖而出,赢得了越来越多开发者的青睐.

技术与人性的平衡:Cursor AI的持续进化

Cursor AI的发展理念是在提供强大功能的同时,始终保持对用户需求的敏感。它不断优化自然语言理解能力,使人机交互更加流畅自然。同时,Cursor AI也在不断完善其个性化推荐系统,让每个用户都能获得量身定制的编程体验。一位经常使用Cursor AI的全栈开发者评价道:”我最欣赏Cursor AI的是,它在变得越来越智能的同时,始终保持了对人性化需求的关注。它不是要取代程序员,而是成为我们的得力助手.”

展望未来:Cursor AI对软件开发行业的深远影响

随着AI技术的不断进步,Cursor AI等智能编程工具必将对软件开发行业产生深远影响。我们可以预见:

  1. 编程效率的大幅提升,加速软件开发周期
  2. 编程门槛的降低,吸引更多人进入这个行业
  3. 代码质量的整体提高,减少bug和安全漏洞
  4. 开发者角色的转变,从繁琐的编码工作中解放出来,更多地关注创新和问题解决

Cursor AI的出现,标志着我们正在进入一个AI辅助编程的新时代。它不仅改变了我们编写代码的方式,更在重塑整个软件开发行业。面对这样一个充满机遇和挑战的未来,开发者们需要保持开放和学习的心态,与AI工具共同成长,共创编程的美好未来.

Git:程序员必备的版本控制利器

thbcm阅读(212)

在软件开发的世界里,有一个工具几乎无人不知、无人不晓,它就是Git——一个强大而优雅的分布式版本控制系统。无论你是刚入门的编程新手,还是经验丰富的老兵,Git都是你不可或缺的得力助手。今天,让我们一起揭开Git的神秘面纱,了解这个改变了整个软件开发生态的重要工具。

Git的诞生:从Linux内核到全球开发者的选择

Linus Torvalds的天才创意

2005年,Linux之父Linus Torvalds面临着一个棘手的问题:如何更好地管理Linux内核的开发?当时使用的BitKeeper因为许可证问题不再适用,Linus决定亲自操刀,打造一个全新的版本控制系统。就这样,Git诞生了。 Linus对Git的设计目标很明确:快速、简单、多分支、完全分布式、能够管理类似Linux内核一样的超大规模项目。短短几周内,Git的第一个版本就诞生了,并很快被用于Linux内核的开发中。

为什么Git迅速成为主流?

Git之所以能够迅速崛起,主要有以下几个原因:

  1. 分布式架构:每个开发者都拥有完整的代码仓库,不依赖中央服务器。
  2. 高效性能:即使对于大型项目,Git也能保持极快的速度。
  3. 数据完整性:Git使用SHA-1哈希算法确保数据的完整性。
  4. 强大的分支管理:创建和合并分支的操作非常快速和简单。 正是这些优秀的特性,使得Git很快超越了SVN等传统版本控制系统,成为了开源社区和众多企业的首选。

Git的核心优势:分布式版本控制的魔力

高效的本地操作

使用Git,你可以在没有网络连接的情况下进行绝大多数操作。提交更改、创建分支、查看历史记录——这些都可以在本地完成,快速而高效。

强大的分支管理

Git的分支管理是其最强大的特性之一。创建一个新分支就像创建一个指向某个提交的轻量级可移动指针。这意味着你可以轻松地进行实验性开发,而不会影响主分支的稳定性。

完整的版本历史

Git保存的是文件的完整历史记录,而不仅仅是文件的变化。这意味着你可以轻松地回到项目的任何一个时间点,查看当时的完整代码状态。

开启你的Git学习之旅

基础知识快速入门

学习Git,最好的方式是边学边练。以下是一些基本概念和操作,可以帮助你快速入门:

  1. 仓库(Repository):你的整个项目文件夹。
  2. 提交(Commit):保存你的文件变化。
  3. 分支(Branch):独立的开发线。
  4. 合并(Merge):把不同分支的修改合并到一起。

点击《Git 基础课程》立即开始学习~

进阶技巧和最佳实践

掌握了基础知识后,你可以进一步学习一些进阶技巧:

  1. 使用Git Flow工作流管理复杂项目。
  2. 学习如何处理合并冲突。
  3. 利用Git Hook自动化你的工作流程。

点击《后端技能树【Linux+Docker+Git】》立即开始学习~

学习Git是一个循序渐进的过程,需要不断的实践和总结。好消息是,我们为你准备了一个完整的Git基础课程——《Git 基础课程》,帮助你系统地掌握这个强大工具。 《Git 基础课程》课程包含7个单元的知识点,涵盖了Git的核心概念和常用操作。无论你是想提高工作效率,还是为了更好地参与开源项目,这门课程都将是你的得力助手。 如果在学习过程中遇到任何问题,欢迎联系我们的客服(微信号:w3cschool66)。加入我们的学习交流群,你还可以和其他学习者一起讨论问题,分享经验。 现在,就让我们一起开启Git学习之旅,成为版本控制的高手吧!

点击下载编程狮App,随时随地学习Git >>

AI编程入门秘籍:0基础也能变身人工智能大师!

thbcm阅读(231)

AI编程概述

人工智能编程,作为现代科技发展的重要分支,已经深刻地改变了我们的生活和工作方式。从最初的符号逻辑到现在的深度学习,AI编程经历了长足的发展。在20世纪50年代,人工智能作为一个概念首次被提出,随后几十年里,随着计算机技术的进步和算法理论的发展,AI逐渐从理论研究走向实际应用。特别是在21世纪初,随着大数据时代的到来和计算能力的大幅提升,机器学习、深度学习等技术取得了突破性进展,使得AI能够解决更加复杂且多样化的问题。

如今,AI编程的应用领域广泛覆盖了医疗健康、金融服务、智能制造、自动驾驶、智能家居等多个方面。例如,在医疗领域,AI可以帮助医生进行疾病诊断、个性化治疗方案设计以及药物研发;在金融行业,AI用于风险评估、市场预测和自动化交易系统;在制造业中,智能机器人可以完成复杂的生产线任务,提高生产效率和产品质量。这些应用不仅极大地提高了效率和准确性,也为人类带来了前所未有的便利和可能性。

对于个人而言,学习AI编程具有极其重要的意义。首先,掌握AI编程技能意味着拥有进入未来高需求职业领域的通行证。随着各行各业对智能化需求的不断增长,具备相关知识和技术的人才将变得极为抢手。其次,通过学习AI编程,人们能够参与到最前沿的技术革新中去,为社会进步贡献自己的力量。更重要的是,这种学习过程本身就是一种思维方式的转变,它教会我们如何用数据驱动的方式解决问题,培养出批判性思考和创新能力。因此,无论是对于希望从事相关行业的专业人士还是对技术感兴趣的普通爱好者来说,投身于AI编程的学习都是非常有价值的选择。

AI编程基础概念

AI编程,作为人工智能技术的核心驱动力,涉及多个基础概念和关键术语。首先,机器学习是AI编程中的一个重要分支,它使计算机能够从数据中学习并做出决策或预测,而无需进行明确的编程指令。通过训练模型识别数据中的模式,机器学习使得AI系统能够在面对新情况时进行自适应和优化。

神经网络是模仿人脑结构和功能的计算模型,也是深度学习的基础。神经网络由大量互相连接的节点(神经元)组成,这些节点可以处理输入信息并通过加权连接传递到下一层。深度学习则是利用多层神经网络来学习和提取数据的高阶特征和表示,广泛应用于图像识别、自然语言处理等领域。

算法在AI编程中同样占据重要地位,它们是解决特定问题的明确步骤集合。常见的AI算法包括决策树、支持向量机、随机森林以及遗传算法等。这些算法各有优缺点,适用于不同类型的问题和数据集。

此外,AI编程还涉及到数据处理、特征工程等过程。数据处理包括清洗、转换和标准化数据,以确保其质量和一致性。特征工程则是选择和构造最相关的特征,以提高模型的准确性和效率。

了解这些基础概念和术语,对于初学者进入AI编程的世界至关重要。它们不仅帮助理解AI系统的工作原理,还为进一步深入学习和实践提供了坚实的基础。掌握这些知识,将有助于在AI项目中做出更明智的决策,提高解决问题的能力。

常用编程语言和工具介绍

Python是AI编程初学者的首选语言,因为它具有简单易学的语法、丰富的库支持和强大的社区资源。Python在数据科学机器学习深度学习等领域都有广泛的应用,许多著名的AI框架如TensorFlowPyTorch等都提供了Python接口。通过学习Python,初学者可以快速掌握AI编程的基本技能,为进一步深入学习打下坚实基础。

除了Python之外,R语言也是一种常用的AI编程语言,特别是在统计分析和数据挖掘领域。R语言拥有丰富的统计计算包和可视化工具,适合处理复杂的数据分析任务。然而,由于Python的通用性和易用性,它仍然是大多数AI初学者的首选语言。

在学习AI编程的过程中,选择合适的开发工具也非常重要。Anaconda是一个流行的Python发行版,它包含了许多常用的科学计算和数据处理库,如NumPyPandas等。Anaconda还提供了虚拟环境管理功能,可以帮助开发者轻松管理项目依赖。此外,Jupyter Notebook作为一种交互式编程环境,也非常适合进行数据分析和可视化操作。

对于深度学习领域的学习者来说,TensorFlow和PyTorch是两个不可或缺的工具。TensorFlow是由谷歌开发的开源深度学习框架,支持多种平台和语言,具有强大的分布式计算能力。PyTorch则是一种动态图计算框架,由Facebook人工智能研究团队开发,以灵活性和易用性著称。这两个框架都提供了丰富的示例代码和文档,帮助初学者快速上手深度学习项目。

学习路径建议

对于零基础学习者,AI编程的学习路径可以划分为几个关键阶段。首先,建议从Python语言开始学起,因为Python以其简洁明了的语法和丰富的库成为AI领域的首选语言。可以通过在线课程如编程狮上的《Python3 入门课程》或《Python3零基础入门到爬虫实战》来打下坚实的基础。这些课程通常包括基础语法、数据结构以及简单的算法实践,非常适合初学者。

掌握了Python之后,下一步是了解机器学习的基本概念。这一阶段,可以选择编程狮上开设的《Python机器学习入门与实战》课程,或是通过阅读《Python机器学习》(作者:Sebastian Raschka)这类书籍深入学习。书中不仅介绍了理论知识,还包含了使用scikit-learn等库进行实践的案例,有助于将理论与实际编码相结合。

随后,深入探索深度学习和神经网络。TensorFlow是由Google开发的开源框架,广泛用于构建各种类型的神经网络模型。《深度学习》(作者:Ian Goodfellow, Yoshua Bengio, Aaron Courville著)是一本权威著作,它详细讲解了深度学习的理论基础,并提供了TensorFlow的使用指南。同时,参与Kaggle竞赛或GitHub上的开源项目也是提升技能的好方法,实践中遇到的问题往往能促使你更深刻地理解所学知识。

最后,加入相关的社区论坛,如Stack Overflow、Reddit的r/MachineLearning版块或国内的相关社区等,与其他开发者交流心得,分享学习经验和资源。这些平台不仅能帮你解决学习过程中的疑难杂症,还能让你了解到行业的最新动态和技术发展趋势。

总之,AI编程的学习是一个循序渐进的过程,从基础的编程语言入手,逐步过渡到复杂的机器学习和深度学习理论与实践。利用优质的在线课程、经典书籍、实战项目和活跃的社区论坛,即使是没有编程背景的初学者也能逐步成长为AI领域的专家。

实践项目推荐

对于AI编程的初学者,实践项目是理解理论知识并提升技能的有效途径。以下是几个适合新手的AI编程实践项目推荐:

1. 手写数字识别

使用MNIST数据集进行手写数字识别是一个经典的入门级项目。MNIST数据集包含60,000个训练样本和10,000个测试样本,每个样本都是28×28像素的灰度图像,对应于0到9的数字。通过这个项目,你将学会如何加载和预处理数据、构建简单的神经网络模型以及训练和评估模型的性能。

2. 猫狗分类器

利用深度学习技术,如卷积神经网络(CNN),开发一个能够区分猫和狗图像的分类器。这个任务可以通过使用预训练模型(例如,VGG16或ResNet)来简化,这些模型已经在大型数据集上进行了训练,可以有效地提取图像特征。你只需在较小的数据集上进行微调即可。

3. 情感分析

情感分析是指确定文本中表达的情感倾向(正面、负面、中性)。可以使用Twitter API收集推文数据,并利用自然语言处理(NLP)技术对文本进行预处理和特征提取。然后,你可以使用机器学习算法(如支持向量机SVM或逻辑回归)来训练分类器。

4. 聊天机器人

构建一个简单的聊天机器人可以帮助学习者理解自然语言理解和生成的基本概念。可以使用Python中的库,如NLTK或spaCy,来进行文本处理和特征提取。接着,利用序列模型(例如LSTM或GRU)来训练聊天机器人响应用户的输入。

以上项目不仅能够帮助初学者巩固AI编程的基础知识,还能激发对人工智能领域的兴趣和探索欲望。每个项目都需要一定的时间和努力来完成,但通过这些实践,你将获得宝贵的经验,为进一步深入学习和应用AI技术打下坚实的基础。

常见问题解答

在AI编程的学习旅程中,初学者往往面临着众多疑问与挑战,以下便是一些常见问题的解答,希望能为您扫清障碍,加速前行。

学习资源如何选取?

面对海量的学习资料,选择适合自己的资源显得尤为关键。建议初学者从基础入手,利用在线平台如Coursera、edX上提供的免费或付费课程,这些课程通常由知名高校或行业专家设计,内容系统且结构清晰。同时,结合经典教材《Python机器学习》、《深度学习入门》等书籍深化理解。加入AI社群和论坛,如GitHub上的开源项目、Stack Overflow问答社区,可以让您及时获取帮助并紧跟技术前沿。

数学基础薄弱怎么办?

虽然高等数学是AI领域的基石,但不必过分担忧。许多在线课程在讲解复杂算法前会先铺垫必要的数学知识,您也可以利用Khan Academy、3Blue1Brown等网站补充线性代数、概率论及统计学的基础知识。记住,实践是最好的老师,通过编写代码实现算法,可以直观地理解其背后的数学原理。

实战经验不足如何弥补?

理论学习之外,动手实践至关重要。参与Kaggle竞赛是一个极佳的选择,它提供了丰富的数据集和实际问题,让您在解决真实世界问题的过程中提升技能。此外,GitHub上的小型AI项目也是不错的练手对象,可以从简单的数据处理、特征工程开始,逐步涉足更复杂的模型构建。

遇到难题卡壳时怎么办?

遇到难题是学习过程中的常态,关键在于如何应对。首先,尝试独立思考并查阅官方文档,这有助于培养解决问题的能力。若仍无头绪,不妨将问题分解细化,或在社区论坛发布求助,往往能得到意想不到的解决方案。记住,没有解决不了的问题,只有尚未找到的方法。

AI领域变化太快,如何保持更新?

AI技术日新月异,持续学习是保持竞争力的关键。订阅行业顶尖会议如NeurIPS、ICML的论文摘要,关注权威博客和新闻站点,可以帮助您把握最新趋势。同时,定期复习旧知识,确保基础牢固,这样在面对新技术时才能更快上手。

总之,AI编程的学习之路虽充满挑战,但只要保持好奇心,勇于实践,积极寻求帮助,您定能在这条道路上越走越远,探索出属于自己的精彩篇章。未来已来,让我们携手共进,拥抱人工智能带来的无限可能。

总结与展望

在本文中,我们全面介绍了AI编程的各个方面,包括其发展历程、应用领域、基础概念、常用语言和工具、学习路径、实践项目以及常见问题解答。通过这一系列的阐述,希望能够帮助初学者建立起对AI编程的基本认识和兴趣。

AI编程不仅是当今科技领域的热门话题,更是推动未来社会发展的重要力量。从最初的简单算法到如今的深度学习和神经网络,AI技术经历了飞速的发展。其在医疗、金融、交通等多个行业的应用已经展现出巨大的潜力和价值。对于初学者来说,掌握AI编程不仅可以为个人职业发展增添亮点,更能参与到这场科技革命中,成为改变世界的一部分。

面对AI技术的快速发展,持续学习和探索显得尤为重要。未来,随着技术的不断进步和应用的深入,AI将在更多领域发挥重要作用。因此,鼓励每一位初学者保持对AI编程的热情,不断深入学习,积极参与实践,探索AI技术的无限可能。同时,我们也期待看到更多的创新和突破,共同推动AI技术的未来发展。

完全掌握|豆包MarsCode 编程助手使用技巧,提升AI编程效率

thbcm阅读(232)

随着 AI 技术的逐渐强大,各种 AI 工具被研发出来,应用在写作、绘图、对话、编程等各种场景。

相信 AI 助手已经融入大家日常的工作流中,我们的豆包MarsCode 编程助手就是一款 AI Coding 领域的提效神器。

在使用 AI 工具过程中可以发现,对于同样的问题而言,不同的提示词、不同的提问方式、不同的功能的调用都可能获得不同的模型反馈。

这也是 AI 交互过程中的有趣之处!

我们整理了一些一些实用的使用姿势,帮助大家“完全掌握” AI 编程助手!

⌨️常用快捷键

豆包MarsCode 编程助手内置很多能迅速提升你开发效率的快捷键,以下是比较常用的几个,你可以在编码时尝试使用:

行为 快捷键(VSCode) 快捷键(JetBrains)
采用行内自动补全的代码 Tab Tab
逐字采用行内自动补全的代码 macOS:Command +  
Windows:Ctrl + 
macOS:Command +  
Windows:Ctrl + 
舍弃代码建议 Esc Esc
打开侧边 AI 对话框 macOS:Command + U 
Windows:Ctrl + U
Ctrl + U
展示下一行自动补全的代码 macOS:opt + ] 
Windows:alt + ]
macOS:opt + ] 
Windows:alt + ]
展示前一行自动补全的代码 macOS:opt + 
[ Windows:alt + [
macOS:opt + [ 
Windows:alt + [
提问框内换行 Shit + Enter Shit + Enter

你还可以在 IDE 中管理豆包MarsCode 编程助手的快捷键。以 Visual Studio Code 为例,你只需点击左下角的「管理」按钮,然后在快捷菜单中选择「键盘快捷方式」。

在键盘快捷方式窗口的输入框中,输入 “MarsCode” 关键词,筛选出豆包 MarsCode 编程助手的快捷键,即可按需修改组合键。

常用斜线命令

我们有多种斜线命令可以用来帮助解释代码、修复代码、编写单测等等,助你提升工作效率。

️快捷功能

1. 使用 #Workspace

在对整个项目进行提问或提出代码需求的时候,可以直接扣 #Workspace + query 即可。

2. 附上相关文件 #File

使用#File 引用相关文件,将 AI 编程助手操作的范围限制在代码库中指定的上下文中。

引用文件的时候,请#在评论框中输入内容,然后选择#File,然后你将看到一个弹出窗口,你可以在其中选择文件。你也可以 #File:{filename}在评论框中输入内容。

3. 快速 Apply

点击 AI 生成代码块的右上角 Apply 按钮,即可自动识别对应的文件位置并形成 Diff,选择部分采纳或全部采纳采纳,即可快速应用新代码。Apply 功能支持自动识别文件路径进行代码修改、代码修复全局应用以及快速生成代码注释、创建新文件。

AI 提问技巧

我们的 AI 编程助手是基于LLM(大语言模型)对大家的提问进行回答。对于大语言模型来说,上下文是它理解并输出的关键,也就是说,上下文越明确、丰富,AI 的预测和输出的结果越好。这里我们就有几个与 AI 对话时可以使用的小技巧,帮助大家更轻松的从 AI 编程助手这里得到想要的答案。

1. 打开相关文件

打开相关文件就是为 AI 编程助手提供上下文的好方法,还可以在聊天界面中通过#File 提供相关文件。在切换上下文或者转换到其他任务主题的时候,可以把不需要的文件关闭。

2. 提供置顶注释

需要 AI 编程助手生成一整套代码时,为你的文件添加置顶注释能够帮助 AI 助手明确工作目标。比如,空白文件中缺少足够的代码上下文,就可以通过注释的形式提供功能描述,让 AI 获得足够的提示从而推荐你需要的代码。

在处理数据或操作字符串时,也可以为 AI 编程助手提供一个示例,这将更便于 AI 理解。

3. 正确命名

为变量和函数赋予有实际意义的名称,因为 AI 编程助手会从名称推断意图,从而提供代码补全。

4. 提供函数注释

函数名称一般只具有描述性而且不能太长,因此添加函数注释可以为 豆包MarsCode 编程助手提供更多信息。

当然,反过来,豆包MarsCode AI 编程助手也可以帮你创建注释,并一键Apply到项目中。

5. 提供示例代码

向 AI 编程助手提供示例代码将有助于它确定你要查找的内容,进而生成与你想要实现的语言和任务相匹配的建议,或者根据你当前的实践返回建议。比如,你可以项目中提供代码示例,展示如何端到端地完成任务。

6. 删除不相关的请求

对于之前提出过但现在不需要的问题,可以在聊天界面中移除,这样能够保持与 AI 对话的主题不变,保证 AI 编程助手的最佳输出。

7. 选中相关代码

在提问之前,可以选中与问题相关的代码,帮助 AI 编程助手更好地掌握上下文。

8. 按主题区分会话框

在同时就多个主题与 AI 编程助手进行对话的时候,可使用聊天界面上的 + 号创建新的会话,每一个会话对应单一固定主题。

豆包MarsCode AI 编程助手可以为你提供个性化的建议和帮助,大大提升工作效率。希望这篇文章能够帮助大家 get 各种使用小技巧,完全掌握 AI 编程助手,激发它的全部潜能~

点击【下载豆包MarsCode AI 编程助手】立即开始AI编程~

W3Cschool AI 工具箱:互联网人的智能创作加速器

thbcm阅读(240)

在数字化浪潮的推动下,AI 技术正深刻地改变着我们的工作和生活方式。对于互联网从业者而言,无论是开发者、设计师、内容创作者还是普通用户,AI 工具都已成为提升工作效率、激发创意潜能的关键利器。今天,就让我们深入探索一款备受瞩目的综合性 AI 工具箱——W3Cschool AI 工具箱

一、W3Cschool AI 工具箱的独特优势

(一)一站式聚合多元 AI 工具

W3Cschool AI 工具箱宛如一个功能强大的资源宝库,将互联网人在创作过程中所需的各类 AI 创作工具以及人工智能辅助工具一并囊括其中。从编程辅助工具到内容生成神器,从图像处理专业助手到数据分析得力伙伴,其涵盖范围之广令人惊叹。无论是开发者急需高效的代码生成工具,还是设计师渴望寻觅独特的图像生成器,亦或是内容创作者急需灵感源泉,W3Cschool AI 工具箱都能精准匹配到你的需求。

(二)严格筛选确保工具优质

该工具箱内的每一款工具都经过了精心挑选,以确保其具备卓越的功能和便捷的使用体验。无论是广受好评的热门 AI 编程助手,还是崭露头角的新兴图像生成工具,都能在这里找到。这些工具不仅能显著提升你的工作效率,更能为你打开创意灵感的大门,让你在创作的道路上如虎添翼。

(三)动态更新紧跟 AI 前沿

AI 技术日新月异,新工具与新功能层出不穷。W3Cschool AI 工具箱凭借敏锐的洞察力,定期进行更新,确保你能第一时间接触到最新的 AI 工具。无论是最前沿的自然语言处理模型,还是最新潮的图像识别技术,你都能在这里率先体验,始终站在 AI 创作的最前沿。

(四)免费使用降低门槛

W3Cschool AI 工具箱内的大多数工具都贴心地提供了免费使用的选项,无需支付任何费用,你就能尽情感受 AI 的强大魅力。这一举措极大地降低了使用门槛,让你可以毫无负担地自由尝试不同的工具,从而精准地找到最契合自身需求的那一款,开启智能创作之旅。

二、多场景适配满足不同需求

(一)开发者专属助力

  • 高效代码生成:借助 AI 编程助手,能够快速生成高质量的代码,大幅提升开发效率,为你节省宝贵的时间,让你能够更专注于核心业务逻辑的实现。
  • 深度代码优化:自动检测代码中潜藏的问题,并给出针对性的优化建议,有效提升代码质量,让代码更加稳健、高效,降低后期维护成本。
  • 便捷文档生成:自动生成详细的代码文档,不仅节省时间,还能显著提高代码的可读性,方便团队协作与后期维护,提升整个项目的开发效率。

(二)设计师的创意源泉

  • 创意图像生成:只需输入简单的文字描述,即可生成高品质的图像,为设计工作注入源源不断的创意灵感,让你在设计创作中更加得心应手,轻松打造出独具特色的作品。
  • 智能设计优化:自动优化设计布局,并提供专业的设计建议,助力提升设计效果,打造更具吸引力的作品,让你的设计作品在众多竞争中脱颖而出。
  • 精准色彩搭配:通过智能算法推荐科学合理的色彩搭配方案,显著提升设计的视觉效果,使作品更具视觉冲击力,为你的设计作品增添更多亮点。

(三)内容创作者的得力助手

  • 优质内容生成:输入主题,即可快速生成高质量的文章、博客以及社交媒体内容,解决创作素材难题,让你在内容创作中更加高效、轻松,快速产出优质内容。
  • 全面内容优化:自动检测内容中的语法错误与逻辑问题,并给出切实可行的改进建议,提升内容质量,让你的内容更具吸引力和说服力,提高内容的传播效果。
  • 创意灵感激发:提供丰富的创意灵感,帮助创作者突破创作瓶颈,开启全新的创作思路,让你在内容创作的道路上不再迷茫,持续产出优质、有创意的内容。

三、总结

在 AI 技术蓬勃发展的浪潮中,W3Cschool AI 工具箱无疑是你不可或缺的得力助手。无论你是追求工作效率的提升,还是渴望激发无限的创意灵感,W3Cschool AI 工具箱都能为你提供全方位的支持。即刻访问 W3Cschool AI 工具箱,开启你的智能创作精彩之旅,让 AI 成为你事业腾飞的强大后盾。

AI助力数据分析入门:《人工智能辅助数据分析(基础)》课程来袭!

thbcm阅读(227)

在数据驱动的时代浪潮中,人工智能(AI)已成为数据分析领域的强大引擎。企业决策愈发依赖于从海量数据中提炼出的精准洞察,而AI技术的融入,让这一过程变得高效且深入。对于那些渴望掌握数据分析技能,却又对复杂的数据处理望而却步的人来说,w3cschool推出的《人工智能辅助数据分析(基础)》课程,无疑是一盏指引前行的明灯。

课程亮点

1. 从零开始,打好基础

本课程专为数据分析新手设计,无需任何编程或数据分析基础。从认识数据开始,逐步带你走进数据分析的世界。课程内容涵盖了数据结构、汇总数据、排序、过滤数据、分组等基础知识点,让你扎实掌握数据分析的必备技能。

2. AI助力,事半功倍

借助人工智能的强大能力,课程将教你如何高效地处理数据。AI可以快速完成数据清洗、特征提取、模型构建等繁琐工作,让你从繁杂的数据处理中解脱出来,专注于数据分析的核心——发现数据背后的规律和价值。想象一下,只需一个指令,AI就能帮你完成大量工作,这将大大提升你的工作效率!

3. 实战案例,学以致用

课程不仅注重理论知识的讲解,更强调实战应用。通过丰富的实战案例,你将学会如何将所学知识应用于实际问题。比如,某电商平台利用AI分析用户行为数据,发现每逢周二晚上8点到10点,购买宠物用品的用户数量会突然增加。这个有趣的发现帮助平台优化了营销策略,大大提升了销售额。通过这些案例,你将深刻理解数据分析在实际工作中的重要作用。

4. 灵活学习,随时随地

我们知道,每个人的学习时间和方式都不同。因此,本课程提供了灵活的学习方式。你可以根据自己的时间安排,随时随地学习。无论是利用碎片时间在手机上学习,还是在电脑前进行系统学习,都能满足你的需求。点击下载编程狮App,让你的学习更加便捷。

课程大纲

第1章 人工智能在数据分析中的基础应用

  1. 丰富的数据世界
  2. 数据结构
  3. 汇总数据1
  4. 汇总数据2
  5. 排序
  6. 过滤数据
  7. 分组

为什么选择这门课程?

1. 专业师资

我们的课程由经验丰富的数据分析专家授课,他们不仅具备深厚的理论知识,更在实际工作中积累了丰富的经验。他们将用通俗易懂的语言,为你讲解复杂的知识点,让你轻松掌握数据分析的精髓。

2. 互动学习

学习过程中,你将有机会与其他学员互动交流。通过讨论和分享,你可以拓宽思路,解决学习中遇到的问题。同时,我们的老师也会及时解答你的疑问,确保你能够顺利掌握所学知识。

3. 持续更新

数据分析领域不断发展,新的技术和方法层出不穷。我们的课程将定期更新,确保你能够学习到最新的知识和技能。无论你是刚刚入门的新手,还是希望提升自己技能的从业者,这门课程都能满足你的需求。

结语

如果你渴望在数据分析领域大展身手,却又苦于没有合适的学习途径,那么《人工智能辅助数据分析(基础)》课程将是你的不二之选。它将为你打开数据分析的大门,让你在AI的助力下,轻松掌握数据分析的核心技能。赶快点击链接 https://www.w3cschool.cn/minicourse/play/data_fundamentals,开启你的数据分析之旅吧!

《Cursor AI编程入门:零基础开发Web在线小工具》课程推荐

thbcm阅读(207)

在当今数字化时代,掌握编程技能无疑为个人发展开辟了广阔的道路。无论你是对编程充满热情的初学者,还是希望提升自己技术能力的职场人士,编程狮上的《Cursor AI编程入门:零基础开发Web在线小工具》课程都将是你的理想选择。

课程亮点

从零开始,轻松入门

本课程专为零基础学员设计,无需任何编程前置知识。从Cursor的基本概念讲起,逐步引导你进入编程的世界。在第一章“初识Cursor”中,你将通过导学部分了解课程的整体架构,随后学习如何安装Cursor,为后续的开发实践打下坚实的基础。

实战项目,学以致用

理论与实践相结合是本课程的核心教学理念。在第二章“简单上手Cursor:用Cursor开发九宫格切图工具”中,你将通过实际项目深入学习。从前期准备开始,明确产品需求,到验收需求确保项目方向正确,每一步都让你亲身体验编程的魅力,真正做到学以致用。

作品上线,展示自我

学习编程的最终目的是能够将作品展示给更多人。课程的第三章“上线你的Web作品”将教你如何将自己开发的Web小工具推向世界。从创建GitHub仓库,到将代码推送至仓库,再到借助Vercel将网站上线,这一系列操作让你的作品能够被全球用户访问,极大地提升你的成就感和自信心。

课程优势

专业师资

课程由经验丰富的编程专家精心打造,他们不仅具备深厚的理论知识,更在实际项目中积累了丰富的经验。他们将用通俗易懂的语言,为你讲解复杂的编程概念,确保你能够轻松理解并掌握。

灵活学习

w3cschool.cn平台提供了便捷的学习环境,你可以根据自己的时间安排,随时随地学习课程内容。无论是碎片化时间的利用,还是集中时间的深入学习,都能满足你的需求。

适合人群

  • 编程初学者:如果你对编程感兴趣,但苦于没有入门途径,本课程将是你开启编程之旅的最佳选择。
  • 职场人士:对于希望提升自己技术能力,增加职场竞争力的职场人士来说,通过本课程学习开发Web在线小工具,将为你的简历增添亮点。
  • 创意爱好者:如果你有丰富的创意,但缺乏将创意转化为实际作品的技术手段,本课程将帮助你实现创意的落地,让你的作品能够被更多人看到。

结语

Cursor AI编程入门:零基础开发Web在线小工具)》课程不仅为你提供了系统的学习内容,更通过实战项目和作品上线环节,让你在实践中成长,实现从编程小白到能够独立开发Web小工具的华丽转变。现在就点击课程链接,开启你的编程之旅,让我们一起在编程的世界里探索无限可能!

Firecrawl课程:开启网站数据转换之旅

thbcm阅读(183)

在大数据和人工智能迅猛发展的今天,如何高效地将网站数据转化为可供大语言模型(LLM)使用的数据,成为了许多企业和开发者关注的焦点。编程狮平台推出的《Firecrawl:将任何网站转为LLM就绪数据》课程,正是为了解决这一需求而设计的。无论你是数据科学家、AI工程师,还是对数据处理感兴趣的编程爱好者,这门课程都将为你提供系统的学习路径和实战经验。

课程概览

Firecrawl 将任何网站转为LLM就绪数据》课程专为希望提升数据处理能力的开发者和数据分析师设计。课程内容丰富,从基础到进阶,逐步引导学员掌握Firecrawl工具的使用,以及如何将网站数据转化为可用于大型语言模型(LLM)的格式。

第1章 Firecrawl基础

  • Firecrawl简介:了解Firecrawl的基本功能和应用场景,为后续学习奠定基础。
  • 如何使用 Firecrawl:通过实际操作,学习如何使用Firecrawl工具进行数据抓取。
  • 使用 LLM 提取网站数据:探索如何结合LLM技术,高效地从网站中提取有价值的信息。
  • 本地部署Firecrawl服务:掌握如何在本地环境中部署Firecrawl服务,以便更灵活地进行数据处理。

第2章 Firecrawl进阶

  • 为什么公司需要AI的数据策略?:深入探讨企业为何需要制定AI驱动的数据策略,以及这一策略如何助力企业成长。
  • 使用 Firecrawl 和 E2B 抓取并分析数据:学习如何结合Firecrawl和E2B工具,进行更深入的数据抓取和分析。
  • 使用LLM提取进行客户洞察:了解如何利用LLM技术,从数据中挖掘客户洞察,为产品和服务的优化提供依据。
  • 使用 Groq Llama 3 构建“知识库”:掌握如何使用Groq Llama 3工具,构建企业专属的知识库,提升数据的利用价值。

课程优势

实战导向

课程内容注重实战,通过实际案例和项目,让学员在实践中掌握数据提取和分析的技能。这种实战导向的教学方式,不仅有助于学员快速理解理论知识,还能提高学员解决实际问题的能力。

灵活学习

w3cschool.cn平台提供了灵活的学习方式,学员可以根据自己的时间和进度,自由安排学习计划。无论是利用碎片化时间进行学习,还是集中时间深入研究,都能满足学员的需求。

适合人群

  • 开发者:希望提升数据处理能力,为自己的项目或产品提供更强大的数据支持。
  • 数据分析师:需要从网站中提取和分析数据,为企业的决策提供依据。
  • 企业决策者:了解AI数据策略的重要性,希望通过数据驱动的方式提升企业的竞争力。

结语

Firecrawl 将任何网站转为LLM就绪数据》课程不仅为你提供了系统的学习内容,还通过实战项目,帮助你快速掌握数据提取和分析的技能。现在就点击课程链接,开启你的数据转换之旅,让我们一起在数据的世界里探索无限可能!

AI Coding 深度解析:探索编程新范式与未来趋势

thbcm阅读(181)

“ AI Coding 是一个快速演进的领域,我们需要了解它当前的局限性,为未来的各种可能性做好准备,可能一个任务今天无法完成但是在明天模型升级后就可以实现了。唯一的应对办法是刻意练习,刻意地用 LLM 完成一些日常的任务,感知模型能力的边界和变化,并且尝试用工程的手段去弥补模型的不足以投入使用”。

AI Coding 的发展与影响

大语言模型的演进趋势

AI Coding 的核心发展趋势体现在 AI 自主性的飞速提升。从最初以代码补全、代码问答为主的 Copilot 形式(e.g GitHub Copilot)到目前以独立完成任务的 Agent 形式(e.g Devin)演进。

代码大模型的演进速度非常快,相较于去年同一时间的产品,如今的模型能力超乎预期。前沿模型在代码生成任务上提升显著,其成本和速度在持续优化,尤其是从 0 到 1 生成小型项目上的表现。总之,前沿模型在变得更强更小,这意味着更好的体验和更低的成本

此外,大家普遍认为 2025 年是属于 Agent 应用的一年,大模型在这方面的能力达到了实现成熟应用的拐点并且其能力会持续加强,主要可以体现在以下四个方面:

▪️ 规划(Planning):制定计划、将计划拆分成子任务、为子任务设定目标、基于反馈对计划进行调整。

▪️ 记忆(Memory):记录在 Agent 执行过程中产生的历史思考、行动和环境观测。

▪️ 感知(Perception):接收来自环境的信息,可以是文本或多模态的形式。

▪️ 行动(Action):基于计划和 LLM 的决策,和环境进行交互并对环境造成状态的改变。对于行动而言一个重要的机制就是控制和使用外部工具

AI Coding 带来的改变与影响

每一个技术革新的过程都会经历若干个阶段,我们现在正在跨越从早期市场到主流市场这个鸿沟。对于早期的采用者来说,他们看到了这项技术的巨大潜力并且为之兴奋,尽管不成熟或者有时候效果不佳,但是 AI Coding 的使用体验非常神奇。这个工具能猜到你的意图并给出对应的代码,并且在持续快速地提升,越来越稳定,完成更难的任务。

正因为 AI Coding 是一个快速演进的领域,我们需要了解它当前的局限性,为未来的各种可能性做好准备,可能一个任务今天无法完成但是在明天模型升级后就可以实现了。唯一的应对办法是刻意练习,刻意地用 LLM 完成一些日常的任务,感知模型能力的边界和变化,并且尝试用工程的手段去弥补模型能的不足以投入使用(比如用 RAG 去除幻觉)。一方面你会深化认知和技巧,另一方面一旦达到零界点你将是第一批的受益者。

🪐 豆包MarsCode 与 AI Coding

豆包MarsCode 的判断与思考

AI Coding 目前还处在早期的阶段(尽管相对其它的应用场景要成熟很多,并且已经在企业中大范围应用),但是它的发展速度非常快(过去两年 LLM 性能快速地提升),功能形态、交互方式、应用场景都在随之持续变化,总体向着更加自主、进一步解放生产力的方向发展。

在字节内部,豆包MarsCode 已经覆盖了 70% 以上的开发者,从编码阶段就开始为开发者贡献代码和技术解决方案。在代码提交后,AI 也会参与代码评审,自动生成测试用例提升覆盖率,上线后也用于辅助线上问题的定位和解决等等。

新功能 Apply 的诞生与亮相

我们可以从一个公式去理解豆包MarsCode 在进行 Apply 产品功能设计时的思考:

p⋅(t + a)

其中 p 是 LLM 失败的概率, t 是从用户请求到响应的时间, a 是在失败情况下造成的任何额外损失,这个公式得到的结果就是用户在使用过程中感受到风险的大小。当用户意识到某个功能存在风险(高延迟,低成功概率)时,他们会停止使用并且很难恢复信任,这种情况在 LLM 应用上更为明显。

代码问答侧边栏是一个风险非常低的功能。因为有流式传输,你可以立即开始阅读,t 是很小的,但是 p 通常相对较高。在生成代码时,即使 LLM 不完美,你也有一段新的代码可以参考、构建和重新提示以改进方案,它不会马上修改源代码,因此 a 也是非常小的。于是,当代码修改方案已经被确认后,如何快速且准确的将这些修改更新到代码中就非常重要。Apply 解决了这关键的最后一步,无需手动复制粘贴或者手动修改,直接通过智能分析实现在对应的位置修改代码,让整个代码问答工作流变得更流畅。Apply 功能大大降低了代码变更的成本。

高效利用 AI Coding 的方法与实践

优化 AI 生成代码的质量、可靠性和安全性

▪️ 高质量上下文:模糊不清的上下文容易导致大模型出现幻觉。完成一个任务时对人重要的信息大概率对 AI 也非常重要,你可以通过主动显式地引入这些信息来帮助 AI。比如代码补全打开相关的文件,问答的时候用 #Code/#File/#Folder 引入明确的代码片段来实现。

▪️ 生成测试用例:让 AI 在完成一段功能后添加对应的测试用例,可以提升任务的稳定性,也可以避免后续的任务破坏已有的功能。

▪️ 项目实践沉淀:每个项目都会有自己的编码规范和最佳实践,这些知识都值得沉淀。当前 LLM 的指令跟随和上下文感知能力都非常强,加入这些规则和知识库会对任务的完成效果和稳定性有非常大的帮助。

实现 AI Coding 在大型项目的可行性探索

我们在大型工程中也要解决可行性的问题,在 LLM 时代之前我们会怎么做?我们会通过做抽象、做架构隔离、做分工、记录文档等等方式来解决。一个大工程如果在这些方面做的很好,那么对实践 AI Coding 也大有帮助。

哪怕一个项目有几十甚至几百万行代码,但是解决一个具体问题时人们和 AI 所需要的上下文都是相对有限的。目前的 AI Coding 工具背后都会有一个代码知识图谱系统支持,用于召回与当前任务相关的上下文。随着 Agent 的出现,AI 会自己分析任务并调用 IDE 中的工具探索、获取上下文,做到更加的精确。

未来已来:开发者的机遇与建议

️ 机遇

▪️ 降低开发门槛

软件开发不再是技术门槛高的专属领域,只要具备洞察力,个体即可利用 AI 构建工具,满足长尾需求。AI Coding 让更多人有机会参与到解决实际问题的创新之中,释放了开发潜力。

▪️ 提升个体生产力

以CPU做类比,Copilot 相当于提升单核处理效率,而 Agent 则让开发者拥有多核并行能力。未来可能会有很多小型但是极具战斗力的团队或者创业公司。

建议

▪️ 学习能力

对于学生或者职场新人,成长是最重要的事情,在学校除了打好基础,培养有效学习的能力也非常重要。

▪️ 好奇心

好奇心是一个优秀程序员的的重要特征,它能驱动你对一个问题的持续深耕,也能驱动你去探索前沿的技术。

▪️ 驾驭 AI 的能力

除了好奇心,还要有满足好奇心的能力。大模型的出现极大降低了这一能力的门槛,成长的效率会大幅提升。驾驭好这个工具也会成为日后在职场中的一个竞争优势。

启智增效:高校学生如何用 AI 助力学习

学习和巩固计算机基础知识

进入职场后,你会发现计算机科学基础课程的重要性在职场中会愈发凸显。无论是学习新技术、设计解决方案,还是定位线上疑难问题,都需要对计算机软硬件体系有深刻理解。然而,学校的理论教学往往与实际应用场景脱节,这时 AI 就可以成为你的得力助手:

▪️ 将理论落地实践:学习一个知识点时,AI 可以提供相应的应用场景,解释在实际工程中的实现方式,甚至提醒你可能遇到的异常情况。

▪️ 明确使用场景:以数据结构和算法为例,AI 不仅可以帮助你理解它的实现,还能告诉你在何种场景下使用何种算法或数据结构,让学习更加贴近真实项目需求。

快速掌握语言、框架和工具的实践操作

▪️ 优化学习流程:AI 能帮你解决工具链安装、工程创建、依赖配置等繁琐任务,让你快速进入核心知识点的学习,减少对技术门槛的畏惧。

▪️ 个性化指导:AI 会根据你的实际水平提供量身定制的解释和帮助,耐心解答每一个问题,让学习过程更加舒适、无压力。

▪️ 引导工程最佳实践:高校教育中对开发工具、编程规范等方面的内容常常不足,因此 MIT 也出了这样的课程:The Missing Semester of Your CS Education。AI 已经学习了大量实际项目的最佳实践,可以在问答中直接指导你正确使用工具并遵循规范。

在编程狮学习下列课程的时候不妨试试借助 AI 试试吧~

分类 课程名称 课程介绍 流行指数 适合人群
前端开发 HTML入门课程(含HTML5) 从零开始学习HTML,掌握网页结构搭建及HTML5的新特性和语义化标签,为前端开发打下坚实基础 初学者、前端开发者
前端开发 CSS 入门课程 学习CSS选择器、盒模型、布局方式等基础知识,通过实战项目掌握网页样式设计技巧,提升页面美观度 初学者、前端开发者
前端开发 JavaScript 入门课程 掌握JavaScript语法、DOM操作、事件处理等核心知识,学会实现网页的交互效果和动态功能 初学者、前端开发者
前端开发 TypeScript 入门到进阶课程 从TypeScript基础语法讲起,深入学习高级类型、接口、类等概念,助力开发者编写高质量的前端代码 初学者、前端开发者
前端开发 Vue2入门课程 学习Vue2框架的响应式数据绑定、组件系统、路由管理等核心功能,通过项目实践快速上手前端组件化开发 初学者、前端开发者
后端开发 Node.js 入门课程 了解Node.js的运行机制,学习使用Node.js搭建服务器、处理HTTP请求和响应,掌握常见的后端开发框架和模块 初学者、后端开发者
后端开发 PHP 入门课程 讲解PHP语言基础,包括语法、函数、数组等,以及如何使用PHP进行数据库操作、会话管理等Web后端开发任务 初学者、后端开发者
后端开发 C# 入门课程 学习C#语言的基本语法、面向对象编程思想,以及.NET框架下的Web开发、桌面应用开发等技术 初学者、后端开发者
后端开发 C++ 入门课程 介绍C++语言的核心特性,如指针、引用、类和对象等,适合希望从事系统编程、游戏开发等领域的初学者 初学者、后端开发者
移动开发 Android 零基础入门课程 从Android开发环境搭建开始,学习Java/Kotlin语言在Android平台的应用,掌握布局设计、事件处理、服务等开发要点 初学者、移动开发者
移动开发 Swift 入门课程 学习Swift语言的语法和特性,了解iOS开发的基本框架和组件,能够开发简单的iOS应用 初学者、移动开发者
数据库 SQL 入门课程 讲解SQL语言的基本语法,包括数据查询、插入、更新、删除等操作,以及数据库的设计和优化原则 初学者、数据库开发者
数据库 MySQL 入门课程 详细介绍MySQL数据库的安装、配置、管理,以及如何使用SQL语句进行高效的数据库操作和数据处理 初学者、数据库开发者
系统运维 Linux 入门课程 学习Linux操作系统的常用命令、文件系统管理、用户权限控制等基础知识,掌握服务器的基本运维操作 初学者、运维人员
系统运维 Git 基础课程 从版本控制的概念讲起,学习Git的基本操作,如克隆、提交、分支管理等,提高代码协作和管理效率 初学者、开发者
网络技术 基础网络协议入门课程 深入讲解HTTP、TCP/IP等基础网络协议的工作原理和应用,帮助学员理解网络通信的过程和机制 初学者、网络工程师
其他 Python3 入门课程 学习Python3的语法基础、数据类型、控制结构等,掌握其在数据分析、爬虫开发、自动化脚本等领域的应用 初学者、多领域开发者
其他 Java入门课程 从Java语言基础讲起,涵盖面向对象编程、集合框架、多线程等内容,为后续的Java Web开发或Android开发打基础 初学者、多领域开发者
其他 C语言入门课程 学习C语言的基本语法、指针、数组、函数等核心概念,培养学员的编程思维和算法能力 初学者、多领域开发者
其他 Docker 入门课程 了解Docker容器技术的基本概念,学习如何使用Docker搭建开发环境、部署应用,实现应用的快速交付和部署 初学者、开发者
其他 微信小程序入门课程 学习微信小程序的开发框架和API,掌握页面设计、数据绑定、网络请求等开发技巧,能够开发简单的微信小程序 初学者、前端开发者

如果你还没尝试用 AI 辅助编程,现在,迈出探索 AI Coding 的第一步吧!

立即下载豆包 MarsCode

联系我们