精华内容
下载资源
问答
  • Python语言turtle模块

    千次阅读 2019-03-11 13:14:57
    什么是turtle Turtle是python内嵌的绘制线、圆以及其他形状(包括文本)的图形模块。 turtle函数的使用 turtle.pendown() 放下画笔 turtle.penup() 抬起画笔 turtle.pensize(int) 设置画笔宽度,值为整数型 turtle....

    什么是turtle
    Turtle是python内嵌的绘制线、圆以及其他形状(包括文本)的图形模块。
    turtle函数的使用
    放下画笔:turtle.pendown()

    抬起画笔:turtle.penup()

    设置画笔宽度,值为整数型:turtle.pensize(int)

    讲话比向前移动一定的角度:turtle.forward(float)

    将画笔向后移动一定的角度:turtle.backward(float)

    将画笔右转一定的角度:turtle.right(angle)

    将画笔左转一定的角度:turtle.left(angle)

    将画笔移动到一个指定的绝对坐标:turtle.goto(x,y)

    设置画笔向x方向移动的距离,值为实数:turtle.setx(x)

    设置画笔向y方向移动的距离,值为实数:turtle.sety(y)

    设定turtle箭头的方向为指定方向,0–东 90—北:turtle.setheading(angle)

    将画笔返回到原点:turtle.home()

    绘制一个设置半径和阶数的圆(设置之后会绘制多边形):turtle.circle(r,ext,steps=int)

    绘制一个指定直径的圆点,颜色为字符串类型:turtle.dot(d,color)

    取消最后一个图操作:turtle.undo()

    设置画笔颜色,为整数类型,且取值在1-10之间:turtle.speed(s)

    设置画笔颜色,为字符串类型:turtle.color(‘str’)

    设置填充颜色,为字符串类型:turtle.fillcolor(‘str’)

    结束填充:turtle.begin_fill()

    开始填充:turtle.end_fill()

    返回填充状态,True表示填充,False表示没有填充:turtle.filling()

    清除窗口所有内容:turtle.clear()

    清除窗口,将状态和位置复位为初始值:turtle.reset()

    设置turtle显示的大小,并设置宽度和高度:turtle.screensize(w,h)

    隐藏turtle箭头:turtle.hideturtle()

    显示turtle窗口:turtle.showturtle()

    使turtle窗口不会自动消失:turtle.done()

    如果turtle可见,返回turtle:turtle.isvisible()

    在turtle位置编写字符串s,字体由字体名、字体大小、字体类型三部分组成:turtle.write(‘str’,font=(“Arial”,8,”normal”))

    获取画笔的坐标,返回一个元组,值为浮点型:turtle.position()

    展开全文
  • turtle绘图入门

    千次阅读 2020-10-08 15:44:02
    黎明老师https://segmentfault.com/a/1190000017854607turtle图形库源于1966年诞生的Logo语言,是入门Python的有趣工具。因其简单便...

     

    黎明老师

    https://segmentfault.com/a/1190000017854607

    turtle图形库源于1966年诞生的Logo语言,是入门Python的有趣工具。因其简单便捷的图形化方法、和立即反馈式的绘画效果,成为众多编程入门者的首选。相对于大多数入门教材中枯燥的语法学习,和函数、方法的演练来说,turtle的趣味性显得别具一格、极富效果。

    一直希望能用一篇小短文来讲清楚turtle,但是尝试组织了几次之后,感觉一篇文章门槛还是有点高,最终决定还是分成两篇,即大家现在看到的“初级篇”和“高级篇”,以利更好的分层次阐述。

    一个类库是否利于入门,首先了要解它的背景,它能做什么,不能做什么,没有十全十美的事物,不要期望过高。turtle原意是水生的龟类,可以译成海龟或乌龟。是由1966年Wally Feurzig和Seymour Papert开发出的一种简单易用的编程语言。我们这里的turtle库,指的是turtle语言用Python的实现,turtle库现在已进入Python的内置模块,位于Lib/turtle.py,用于绘图。咱们这里选择turtle库,主要是用来了解和学习Python的贴身入门、语法入门、面向对像入门、认识方向、角度与颜色、简单的数学运算、方法定义、循环与递归等。

    在使用turtle库之前最重要的事,是需要认识turtle的两个坐标、角度系统:standard和logo。如下图所示:

    这里standard模式,也就是标准坐标系,在turtle库的使用过程中,默认使用这套坐标、角度系统,即以绘图界面的中心点为坐标圆点(0,0),以x坐标正方向为0度角,逆时针旋转。不要小看这简单的三句话,这是最基础的约定前提,请熟记于胸,否则编程的时候,容易懵的。

    除了standard标准坐标系外,在turtle库的编程中还经常使用另外一套坐标、角度系统,叫做logo!对,就是那个Logo,那个原来的独立编程语言,这套logo坐标、角度系统就是用来跟原logo兼容的,对于了解过Logo语言的用户来说,会更加熟悉,上图:

    看出差别来了吗,logo坐标系是以绘图界面的中心点为坐标圆点(0,0),以y坐标正方向为0度角,顺时针旋转。跟standard坐标不同的地方在于0度方向的选择,和旋转方式。在编程中使用 mode() 方法进行切换。

    # 切换坐标、角度系统
    # mode('standard')
    mode('logo')

    所以,如果见到这个方法,您首先得切换自己大脑中的坐标、角度系统。:)这是编程的底层逻辑,必需先弄清楚。

    接下来,再认识turtle的画图方式:落笔、抬笔、清空、设置颜色、粗细等等。

    如何让这只乌龟在界面上画一条线呢,就如同咱们用笔写字一样,需要用经过“落笔”、“划过”、“抬笔”、“结束”的过程,用turtle库来表达,同样非常直观,翻译成简单的英文就可以:

    import turtle as t     # 导入turtle库
    t.pendown()            # 落笔
    t.forward(300)         # 划过300个单位的长度
    t.penup()              # 抬笔
    t.done()               # 结束

    在IDE中键入这段代码,执行,就能看到在窗口上画出了这样一条直线。“#”号后面的是注释。(IDE的选择及环境安装见《第一节》)

    用turtle画出了Python的第一条直线之后,接着来看看怎么“转弯”。下面以绘制一个正方形为例子,演示turtle怎么前进、怎么左转、右转。

    import turtle as t     # 导入turtle库
    t.pendown()            # 落笔
    t.forward(100)         # 划过100个单位的长度
    t.left(90)             # 左转90度
    t.forward(100)
    t.left(90)
    t.forward(100)
    t.left(90)
    t.forward(100)
    t.left(90)
    t.penup()              # 抬笔
    t.done()               # 结束

    在IDE中键入这段代码,执行,就能看到在窗口上画出了一个标准的正方形。

    有一点编程基础的小伙伴,立即就可以看出来,上面代码中有四组相同的语句,嗯,这不是可以用循环来实现吗?没错,改进一下:

    import turtle as t
    t.pendown()
    for j in range(4):    # 重复执行4次
        t.forward(100)
        t.left(90)
    t.penup()
    t.done()

    放到IDE中执行,可以看到效果跟顺序执行的完全一致。range()是Python的内置函数,这里表示循环执行的次数。

    注意缩进,Python中不使用括号来表示语句块,而靠冒号:和后面的缩进(空格缩进)来表示语句块。因此缩进成为了语法的一部分,要严格遵循,从其它语言转过来的小伙伴需要习惯一下。

    学习任何一项新知识,就像爬坡一样,有个量变积累到质变的过程。接下来就来写一个乌龟爬坡的小程序吧,上代码:

    import turtle as t
    t.pendown()
    t.forward(50)
    t.left(90)             # 左转90度
    t.forward(50)
    t.right(90)            # 右转90度
    t.forward(50)
    t.left(90)
    t.forward(50)
    t.right(90)            # 右转90度
    t.forward(50)
    t.left(90)
    t.forward(50)
    t.right(90)            # 右转90度
    t.penup()
    t.done()

    放到IDE中执行,可以看到一段3次爬坡的动画。left(90)是向左转动90度;right(90)是向右转动90度。当然这3次爬坡,也是可以用顺序来做的,代码如下:

    import turtle as t
    t.pendown()
    for j in range(3):         # 重复执行3次
        t.forward(50)
        t.left(90)             # 左转90度
        t.forward(50)
        t.right(90)            # 右转90度
    t.penup()
    t.done()

    for循环的执行效果,跟顺序执行的完全一样,更改range(3)的参数,可以执行不同的次数。

    彩蛋来了:turtle既然是乌龟,我怎么画到现在没有看到一只乌龟呢?的确有点奇怪,明明是一个小箭头一直在画画,为什么要说成是turtle乌龟呢?

    不要着急,加一行小代码,乌龟立即出现:

    t.shape('turtle')

    把这行代码,加到“落笔”的前面,就会发现小箭头变成小乌龟了,还是挺萌吧!上面画直线、画正方形、爬坡三个例子你都可以加上试试试试!

    上面的left(90)和right(90)分别表示左转90度和右转90度,那怎么设置乌龟的角度,让它向我们指定的任意方向前进呢?嗯,调整90这个参数,在界面上画一个自己的名字吧!哦,中文就算了,画出来太复杂,画个拼音首字母还是可以的,上代码:

    import turtle as t
    t.mode('logo')        # 切换成Logo坐标、角度系统
    t.shape('turtle')     # 显示出小乌龟
    t.penup()             # 抬笔,先不要画
    t.goto(-200, 100)     # 移动到起始点
    t.setheading(180)     # 设置要画的方面,Logo坐标的180度方向,即向下
    t.pendown()           # 落笔,准备开始画第一个字母
    t.forward(200)
    t.left(90)
    t.forward(100)
    t.penup()             # 第一个字母"L"画完,抬笔
    
    t.forward(100)        # 到达第二个字母的起始位置
    t.pendown()           # 落笔,准备开始画第二个字母
    t.left(90)
    t.forward(200)
    t.right(135)
    t.forward(100)
    t.left(90)
    t.forward(100)
    t.right(135)
    t.forward(200)
    t.penup()             # 第二个字母"M"画完,抬笔
    t.done()

    在IDE中运行这段代码,可以看到小乌龟在窗口左侧画了两个大写的字母“L”和“M”。需要注意的地方是,程序中使用mode('logo')切换到了Logo的坐标、角度系统,setheading(180)将小乌龟的前进方向设置为Logo坐标的180度方向,即向下的方向,如果有疑问,可以参考本文开篇时对坐标系的描述。

    goto(x, y)是一个新方法,可以让小乌龟去到界面上的任意一个坐标点。(当然,画名字的这个小例子,如果全部使用goto(x,y)会比使用forward()要简单很多,具体代码你可以自己尝试)

    配合for循环、forward()和角度度化,可以让turtle在变与不变中创造出很多有意思的图形。比如把上面画正方形的例子稍做变化:

    import turtle as t
    t.pendown()
    for j in range(10):    # 重复执行10次
        # 画正方形-开始
        t.forward(100)
        t.left(90)
        t.forward(100)
        t.left(90)
        t.forward(100)
        t.left(90)
        t.forward(100)
        t.left(90)             # 画正方形-结束
        # 右转36度
        t.right(36)
    t.penup()
    t.done()

    执行后,可以看到,画出一个非常规整、漂亮的组合图案。

    填充,可以让turtle的图形更炫丽。主要有以下几个方法:

    t.pencolor('red')        #设置画笔的颜色
    t.fillcolor('green')     #设置填充的颜色
    t.begin_fill()           #开始填充
    t.end_fill()             #结束填充

    下面来改造一下我们前面画正方形的例子,

    import turtle as t
    t.pencolor('red')        #设置画笔的颜色
    t.fillcolor('green')     #设置填充的颜色
    t.pendown()
    t.begin_fill()           #开始填充
    for j in range(4):
        t.forward(100)
        t.left(90)
    t.end_fill()             #结束填充
    t.penup()
    t.done()

    执行一下,可以看到turtle画出一个红色边框的实心绿正方形。

    在Python中使用def进行方法定义或者叫函数定义,可以让指挥turtle画画这件事,更轻松一点。再次改造一下上面画正方形的例子:

    import turtle as t
    
    def drawRect():            # 定义一个函数,名为 drawRect()
        t.pendown()
        for j in range(4):
            t.forward(100)
            t.left(90)
        t.penup()
        
    drawRect()                 # 调用这个函数
    t.done()

    在这个例子中,我们使用def定义了一个函数,名为drawRect(),内容就是带一个正方形,跟前面的描述一样。

    自定义好函数以后,只要调用这个函数名,就可以执行函数体内的代码内容。我们再来丰富一下这个例子,对上面画多个正方形的例子进行优化:

    import turtle as t
    
    def drawRect():            # 定义函数
        t.pendown()
        for j in range(4):
            t.forward(100)
            t.left(90)
        t.penup()
        
    for j in range(10):        # 重复执行10次
        drawRect()             # 调用这个自定义的函数
        t.right(36)
        
    t.done()

    执行一下,可见效果一样,但是代码更为简洁,可读性更好。

    下面给这段代码加上填充效果:

    import turtle as t
    
    def drawRect():
        t.pendown()
        for j in range(4):
            t.forward(100)
            t.left(90)
        t.penup()
        
    clrs = ['red', 'green', 'blue', 'gray', 'brown'] # 颜色列表
    for j in range(10):
        t.fillcolor(clrs[j % 5])                      # 从列表中选择颜色
        t.begin_fill()                                # 开始填充
        drawRect()
        t.end_fill()                                  # 结束填充
        t.right(36)
        
    t.done()

    运行一下这个小例子,可以看到,turtle画出了用五种不同颜色填充的正方形组合图案。例子中为了使得每个正方形填充的颜色不一样,我们先定义了一个颜色列表clrs,列表clrs中预先存入了5个颜色。在for循环中,每次执行时根据j值的变化,用取余数%的方式,每次取到不重复的颜色。

    当然,turtle的功能不只于此,对于Python的入门者来说,通过turtle生动的例子,可以画漂亮的图形,也可以同时熟悉Python的语法和规则,何乐而不为呢?

    封面图代码Github地址:https://github.com/ddxygq/PyCode/blob/master/%E5%9F%BA%E7%A1%80%E5%8C%85/turtle/tree.py

    展开全文
  • Turtle语法介绍

    千次阅读 2018-08-28 17:35:54
    Turtle句法 Turtle文档允许以紧凑的文本形式写下RDF图。它由一系列指令、三元组语句或空白行组成。 注释:在#之后给出,并继续到行的末尾。 简单的三元组是一个(主语、谓词、宾语)项的序列,由空格分隔,并在每...
    1. 介绍

    2. Turtle句法
      Turtle文档允许以紧凑的文本形式写下RDF图。它由一系列指令、三元组语句或空白行组成。
      注释:在#之后给出,并继续到行的末尾。
      简单的三元组是一个(主语、谓词、宾语)项的序列,由空格分隔,并在每个三元组之后由’.’结尾。
      RDF术语有三种类型:RDF URI引用(简称URIs)、文字和空白节点。
      2.1. RDF术语
      2.1.1. URI引用
      URI被写在“<”和“>”中,可以是绝对的RDF URI引用,也可以相对于当前base URI。
      # this is not a complete turtle document
      <http://example.org/path/>
      <http://example.org/path/#fragment>
      </path>
      <#fragment>
      <>
      2.1.2. @prefix
      URIs也可以通过使用@prefix指令来缩写,该指令允许为重复URIs的长前缀声明短前缀名称。这对于许多在附近的URIs命名空间中定义的RDF词汇表都是有用的,可用采用与XML命名空间机制类似的工作方式。
      一旦定义了一个前缀,例如@prefix foo: <http://example.org/ns#>,在文档中稍后提及URI可以使用一个限定的名称来启动foo:代表更长的URI。例如,限定名称foo:bar是URI http://example.org/ns#bar的速写。
      # this is a complete turtle document
      @prefix foo: <http://example.org/ns#> .
      @prefix : <http://other.example.org/ns#> .
      foo:bar foo: : .
      :bar : foo:bar .
      2.1.3. 换行符
      当文本不包含换行符时,可以使用双引号来编写文本,如”simple literal”。或者当文本可能包含换行符时,使用三双引号来编写文本,如”“”long literal”“”。
      # this is not a complete turtle document
      “a string”
      “”“a string”“”
      “”“a string
      with newlines
      “””
      2.1.4. 语言后缀
      文字可以包含一个语言后缀,或者是数据类型URI,但两者不能同时给出。语言通过简单附加“@+语言标记”来表示。数据类型URIs通过追加^ ^,然后遵循任何合法URI形式(完整或合格)以给出数据类型URI。
      # this is not a complete turtle document
      “chat”
      “chat”@en
      “chat”@fr
      “foo”^^<http://example.org/my/datatype>
      “”“10”“”^^xsd:decimal
      2.1.5. 空白节点
      空白节点被写为_:nodeID以从给定的nodeID中提供一个空节点。生成的空白节点也可以用[],这对于从谓词对象列表或集合的根中为每一对RDF三元组提供主语是有用的。
      # this is not a complete turtle document
      _:me
      _:a1234
      2.1.6. 转义字符
      文字和URIs也可以包含转义字符、不可打印字符,并通过代码点编号对Unicode字符进行编码(尽管它们也可以直接给出,编码为UTF-8)。转义字符有:
      \t (U+0009, tab)
      \n (U+000A, 换行)
      \r (U+000D, 回车)
      \” (U+0022, 双引号 -只允许字符串内可用)
      > (U+003E, 大于号 – 只允许URIs内可用)
      \ (U+005C, 反斜线)
      \uHHHH or \UHHHHHHHH 用于十六进制代码写入Unicode字符,其中H是十六进制数字。
      2.2. URIs缩写
      2.2.1. @base
      可以使用@base指令在文档中更改当前base URI。它允许URIs的进一步缩写,但通常用于简化数据中的URIs,其中前缀指令用于描述数据的词汇表。
      只要这个指令出现,它就定义所有相关URIs解析所针对的base URI。这包括URIs、限定名称、前缀指令以及稍后的基本指令。
      # this is a complete turtle document
      # In-scope base URI is the document URI at this point
      <a1> <b1> <c1> .
      @base <http://example.org/ns/> .
      # In-scope base URI is http://example.org/ns/ at this point
      <a2> <http://example.org/ns/b2> <c2> .
      @base <foo/> .
      # In-scope base URI is http://example.org/ns/foo/ at this point
      <a3> <b3> <c3> .
      @prefix : <bar#> .
      :a4 :b4 :c4 .
      @prefix : <http://example.org/ns2#> .
      :a5 :b5 :c5 .
      2.2.2. 记号 a
      记号a 相当于 URI http://www.w3.org/1999/02/22-rdf-syntax-ns#type
      # this is a complete turtle document
      @prefix doc: <http://example.org/#ns> .
      <http://example.org/path> a doc:Document .
      2.3. 三元组缩写
      2.3.1. ,号
      主语和谓语相同,只有宾语不同时,可以用 , 号将宾语连接。
      # this is not a complete turtle document
      :a :b :c ,
      :d .
      # the last triple is :a :b :d .
      2.3.2. ;号
      主语不变,仅谓语和宾语变化时,可以用 ; 号来重复三元组的主语。
      # this is not a complete turtle document
      :a :b :c ;
      :d :e .
      # the last triple is :a :d :e .
      2.4. 常见数据类型缩写
      2.4.1. xsd:integer
      在语法和数据类型URI中,十进制整数可以直接写入并对应于XML Schema 的数据类型xsd:integer。
      # this is not a complete turtle document
      -5
      0
      1
      10
      +1
      # some long form examples
      “-5”^^xsd:integer
      “10”^^<http://www.w3.org/2001/XMLSchema#integer>
      2.4.2. xsd:double
      十进制浮点双精度数字/固定精度数字可以直接写入,并且在语法和数据类型URI中都对应于XML Schema 的数据类型 xsd:double。
      # this is not a complete turtle document
      1.3e2
      10e0
      -12.5e10
      # some long form examples
      “1.3e2”^^xsd:double
      “-12.5e10”^^<http://www.w3.org/2001/XMLSchema#double>
      2.4.3. xsd: decimal
      十进制浮点任意精度数字可以直接写入,并且在语法和数据类型URI中都对应于XML Schema 的数据类型 xsd: decimal。
      # this is not a complete turtle document
      0.0
      1.0
      1.234567890123456789
      -5.0
      # some long form examples
      “0.0”^^xsd:decimal
      “-5.0”^^<http://www.w3.org/2001/XMLSchema#decimal>
      2.4.4. xsd:boolean
      布尔可以直接写为true或false,并且在语法和数据类型URI中都对应于XML Schema 的数据类型 xsd:boolean。
      # this is not a complete turtle document
      true
      false
      # same in long form
      “true”^^xsd:boolean
      “false”^^<http://www.w3.org/2001/XMLSchema#boolean>
      2.5. RDF集合缩写
      RDF集合可以使用包围在(括号内)的RDF术语序列来缩写。像往常一样,空白可以用来分离它们。这种格式在RDF 集合开始时提供一个空白节点,可以在其他缩写中使用。
      # this is a complete turtle document
      @prefix : <http://example.org/foo> .
      # the value of this triple is the RDF collection blank node
      :subject :predicate ( :a : b : c ) .

    # an empty collection value - rdf:nil
    :subject :predicate2 () .
    3. Turtle语法
    Turtle文件是UTF-8编码的Unicode字符串。仅允许在U+0到U+10FFFF范围内的Unicode编码。
    3.1. 空格
    空格用于分离两个记号,否则这两个记号会被误识别为一个记号。
    空格在相对URI、字符串和长字符串中具有重要意义。
    3.2. 注释
    在Turtle文档中,在“相对URI”或“字符串”之外,注释以 ‘#’符号开始,并继续到行的末尾(标记为字符U+00D或U+00A),如果注释标记后面没有结束行则到文件末尾。注释被视为空白,并由注释记号定义。
    3.3. 转义
    字符串和URIs可以使用\转义序列来表示Unicode编码字节。
    下表描述了在字符串、长字符串或相对URI中允许的所有转义:
    转义字符 代表的Unicode编码
    ‘\u’ hex hex hex hex 一个以十六进制值表示的在U+ 0至U+FFFF范围内的Unicode编码。
    ‘\U’ hex hex hex hex hex hex hex hex 一个以十六进制值表示的在U+ 10000至U+10FFF范围内的Unicode编码。
    ‘\t’ U+0009
    ‘\n’ U+000A
    ‘\r’ U+000D
    ‘\”’ U+0022
    (在 string 和 longString 中使用)
    ‘>’ U+003E
    (仅在relativeURI 中使用)

    ‘\’ U+005C
    3.4. URI标记
    URIs在base URI的作用域范围内被解析。
    取决于协议或文档之外的其他上下文,可使用URI RFC中定义的基本URI机制来定义起始范围内base URI。在Turtle文档解析期间,文档中任何点的作用域内base URI由@base指令确定,该指令相对于当前作用域内base URI设置新的base URI。这个指令可以重复。
    示例(test-30.ttl) 使用了文档 base URI http://www.w3.org/2001/sw/DataAccess/df1/tests/
    # In-scope base URI is http://www.w3.org/2001/sw/DataAccess/df1/tests/ at this point
    <test-00.ttl> <test-01.ttl> <test-02.ttl> .
    @base <http://example.org/ns/> .
    # In-scope base URI is http://example.org/ns/ at this point
    <a2> <http://example.org/ns/b2> <c2> .
    @base <foo/> .
    # In-scope base URI is http://example.org/ns/foo/ at this point
    <a3> <b3> <c3> .
    @prefix : <bar#> .
    :a4 :b4 :c4 .
    @prefix : <http://example.org/ns2#> .
    :a5 :b5 :c5 .
    编码下列N-Triples (test-30.out):
    <http://www.w3.org/2001/sw/DataAccess/df1/tests/test-00.ttl> <http://www.w3.org/2001/sw/DataAccess/df1/tests/test-01.ttl> <http://www.w3.org/2001/sw/DataAccess/df1/tests/test-02.ttl> .
    <http://example.org/ns/a2> <http://example.org/ns/b2> <http://example.org/ns/c2> .
    <http://example.org/ns/foo/a3> <http://example.org/ns/foo/b3> <http://example.org/ns/foo/c3> .
    <http://example.org/ns/foo/bar#a4> <http://example.org/ns/foo/bar#b4> <http://example.org/ns/foo/bar#c4> .
    <http://example.org/ns2#a5> <http://example.org/ns2#b5> <http://example.org/ns2#c5> .
    3.5. 集合
    以下给出由集合项生成的三元组扩展到更长的三元组表示形式:
    ( object1 object2 ) is short for:
    [ rdf:first object1; rdf:rest [ rdf:first object2; rdf:rest rdf:nil ] ]
    ( ) is short for the resource:
    rdf:nil
    3.6. 语法
    这里使用的EBNF在XML 1.0 (第三版) [符号]中定义。
    Turtle – 纯RDF 三元组语言 EBNF
    [1] turtleDoc ::= statement*

    [2] statement ::= directive ‘.’ | triples ‘.’ | ws+
    [3] directive ::= prefixID | base
    [4] prefixID ::= ‘@prefix’ ws+ prefixName? ‘:’ uriref
    [5] base ::= ‘@base’ ws+ uriref
    [6] triples ::= subject predicateObjectList
    [7] predicateObjectList ::= verb objectList ( ‘;’ verb objectList )* ( ‘;’)?
    [8] objectList ::= object ( ‘,’ object)*
    [9] verb ::= predicate | ‘a’

    [10] comment ::= ‘#’ ( [^#xA#xD] )*
    [11] subject ::= resource | blank
    [12] predicate ::= resource

    [13] object ::= resource | blank | literal
    [14] literal ::= quotedString ( ‘@’ language )? | datatypeString | integer | double | decimal | boolean
    [15] datatypeString ::= quotedString ‘^^’ resource
    [16] integer ::= (‘-’ | ‘+’) ? [0-9]+
    [17] double ::= (‘-’ | ‘+’) ? ( [0-9]+ ‘.’ [0-9]* exponent | ‘.’ ([0-9])+ exponent | ([0-9])+ exponent )
    [18] decimal ::= (‘-’ | ‘+’)? ( [0-9]+ ‘.’ [0-9]* | ‘.’ ([0-9])+ | ([0-9])+ )
    [19] exponent ::= [eE] (‘-’ | ‘+’)? [0-9]+
    [20] boolean ::= ‘true’ | ‘false’
    [21] blank ::= nodeID | ‘[]’ | ‘[’ predicateObjectList ‘]’ | collection
    [22] itemList ::= object+

    [23] collection ::= ‘(’ itemList? ‘)’

    [24] ws ::= #x9 | #xA | #xD | #x20 | comment

    [25] resource ::= uriref | qname
    [26] nodeID ::= ‘_:’ name

    [27] qname ::= prefixName? ‘:’ name?
    [28] uriref ::= ‘<’ relativeURI ‘>’

    [29] language ::= [a-z]+ (‘-’ [a-z0-9]+ )*
    [30] nameStartChar ::= [A-Z] | “_” | [a-z] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
    [31] nameChar ::= nameStartChar | ‘-’ | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]

    [32] name ::= nameStartChar nameChar*
    [33] prefixName ::= ( nameStartChar - ‘_’ ) nameChar*
    [34] relativeURI ::= ucharacter*

    [35] quotedString ::= string | longString
    [36] string ::= #x22 scharacter* #x22

    [37] longString ::= #x22 #x22 #x22 lcharacter* #x22 #x22 #x22

    [38] character ::= ‘\u’ hex hex hex hex |
    ‘\U’ hex hex hex hex hex hex hex hex |
    ‘\’ |
    [#x20-#x5B] | [#x5D-#x10FFFF]
    [39] echaracter ::= character | ‘\t’ | ‘\n’ | ‘\r’

    [40] hex ::= [#x30-#x39] | [#x41-#x46]
    [41] ucharacter ::= ( character - #x3E ) | ‘>’

    [42] scharacter ::= ( echaracter - #x22 ) | ‘\”’

    [43] lcharacter ::= echaracter | ‘\”’ | #x9 | #xA | #xD

    1. 例程
      这个例子是RDF/XML语法规范中的例子7的Turtle翻译 (example1.ttl):
      @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
      @prefix dc: <http://purl.org/dc/elements/1.1/> .
      @prefix ex: <http://example.org/stuff/1.0/> .

    <http://www.w3.org/TR/rdf-syntax-grammar>
    dc:title “RDF/XML Syntax Specification (Revised)” ;
    ex:editor [
    ex:fullname “Dave Beckett”;
    ex:homePage <http://purl.org/net/dajobe/>
    ] .
    两个字面量RDF集合的示例:
    @prefix : <http://example.org/stuff/1.0/> .
    :a :b ( “apple” “banana” ) .
    以下表示比 (example2.ttl)更短:
    @prefix : <http://example.org/stuff/1.0/> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    :a :b
    [ rdf:first “apple”;
    rdf:rest [ rdf:first “banana”;
    rdf:rest rdf:nil ]
    ] .
    一个包含两个相同三元组的示例,其宾语为包含换行符的字面量,分别用普通的和长字面量形式编写。假定此文档中的行提要是#xA。 (example3.ttl):
    @prefix : <http://example.org/stuff/1.0/> .

    :a :b “The first line\nThe second line\n more” .

    :a :b “”“The first line
    The second line
    more”“” .
    5. Turtle标识符
    识别Turtle语言的URI为:http://www.w3.org/2008/turtle#turtle
    标识Turtle语言的XML(命名空间名称、本地名称)对是:
    命名空间: http://www.w3.org/2008/turtle#
    本地名称: turtle
    建议的命名空间前缀是ttl(信息性的),这可以使ttl:turtle相当于一个XML限定名。
    6. 一致性

    展开全文
  • 深入理解python语言---turtle库的使用

    千次阅读 多人点赞 2018-11-01 19:35:36
    1. turtle库的基本介绍 (1)python计算生态=标准库+第三方库 -标准库:随解释器直接安装到操作系统中的功能模块 -第三方库:需要经过安装才能使用的功能模块 (2)turtle的一个画布空间最小单位是像素 2. ...

    1. turtle库的基本介绍

    (1)python计算生态=标准库+第三方库

    -标准库:随解释器直接安装到操作系统中的功能模块

    -第三方库:需要经过安装才能使用的功能模块

    (2)turtle的一个画布空间最小单位是像素

    2. turtle绘图窗体

    只有当需要控制窗体大小和位置的时候,才使用setup()函数

    3. 运动控制函数

     

    附蟒蛇脚本如下:

    #PythonDraw.py
    import turtle
    turtle.setup(650,350,200,200)
    turtle.penup()
    turtle.fd(-250)
    turtle.pendown()
    turtle.pensize(25)
    turtle.pencolor("purple")
    turtle.seth(-40)
    for i in range(4):
        turtle.circle(40,80)
        turtle.circle(-40,80)
    turtle.circle(40,80/2)
    turtle.fd(40)
    turtle.circle(16,180)
    turtle.fd(40 * 2/3)
    turtle.done()

    展开全文
  • python语言turtle

    2021-10-31 19:05:28
    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形...
  • 帮忙安装turtle,发现对我这种小白很麻烦。于是把给朋友的包分享出来。 安装后python后 若没有可勾选设置路径,请手动设置 我的电脑右键-属性-高级-环境变量-path-编辑-复制安装python的目录粘贴进去,若横行一起...
  • PythonTurtle 主要目的是为使用 Python 语言进行软件开发提供低门槛的学习方式。初学者可以在内置的 Python shell (类似于 IDLE 环境)中发出指令,并且可以使用 Python 函数去移动一只显示在屏幕上的小乌龟,使得...
  • 此MakeCode Arcade扩展添加了“ Turtle Logo”编程语言来编写代码。 这段代码使用了以前的版本( ),但是我需要根据所使用的基础老师的要求进行一些特定的更改: 需要最大限度地减少块数 需要更改一些模块名称,以...
  • turtle画八角形

    2020-03-01 19:49:06
    import turtle as t t.pensize(2) for i in range(8): t.fd(150) t.left(135)
  • import turtle turtle.pensize(10) turtle.color("blue") turtle.penup() turtle.goto(-110,-25) turtle.pendown() turtle.circle(45) turtle.color("black") turtle.penup() turtle.goto(0,-25) turtle.pen
  • 龟 用Java实现龟(LOGO)语言
  • 在python中利用turtle模块,海龟绘图案例—滚动的字母。文字逐个移动,屏幕更新,以致到窗口的左侧停止。
  • Turtle 的灵感来自Logo 教育编程语言。该语言最初被设计为一种教学工具,甚至可以用来控制在物理纸上画画的小型乌龟机器人。Logo 催生了许多不同编程语言中“海龟图形”的实现。例如,Python 编程语言带有内置的海龟...
  • 1.turtle库是Python标准库之一,是入门级的图形绘制函数库。2.turtle绘图原理:一只海龟在窗体的正中心,在画布上游走,游走的轨迹形成了绘制的图形,海龟是由程序控制的,可以变换颜色、改变宽度等。3.turtle绘图...
  • 主要为大家详细介绍了python使用Turtle库绘制动态钟表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 它是 Wally Feurzeig 、Seymour Papert 和 Cynthia Solomon 在 1967 年开发的原始徽标编程语言的一部分。” 但是在 PyCharm 中由于存在冲突,导致正常 import 的 turtle 无法使用,这里,介绍在 Ubuntu 系统中解决...
  • Turtle库是Python语言中一个很流行的绘制图像的函数库。海龟渲染器,和各种三维软件都有着良好的结合。功能强大,使用方便。该渲染器的特色在于其渲染速度可以优海龟渲染器,和各种三维软件都有着良好的结合。功能...
  • 本篇文章介绍了python使用turtle库绘制四叶草的方法,代码很简单,希望对学习python的朋友有帮助。 import turtle import time turtle.setup(650.,350,200,200) turtle.pendown() turtle.pensize(10) turtle....
  • 1.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪...00390031003900310038427 哪个选项不能正确引用turtle库进而使用setup()函数...
  • turtle.fd(200) #或者写成turtle.forward(200) d =d+90 turtle.seth(d) #改变角度,可以写成turtle。setheading(to_angle) 总结 以上所述是小编给大家介绍的python中的turtle库函数简单使用教程,希望对大家有所...
  • 时间长了,再次复习一遍...2、Turtle在屏幕上绘制图形;绘制一个正方形 import turtle turtle.pensize(4) turtle.pencolor('red') turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) t...
  • python中用turtle画爱心表白运行后的效果图:下面的代码是在python3.7写的,代码有点长,但却语法简单易懂代码如下:import turtlestr = input('请输入表白语:')turtle.speed(10)#画笔速度turtle.setup(1800,700,70...
  • 主要介绍了Python+Turtle动态绘制一棵树实例分享,具有一定借鉴价值,需要的朋友可以参考下
  • import turtle t = turtle.Pen() my_colors = (red,green,yellow,black) t.width(4) t.speed(1) for i in range(10): #0 1 2 3 4 t.penup() t.goto(0,-i*10) #0, -100,-200,-300,-400 t.pendown() t.color(my_...
  • python语言turtle

    2021-09-11 20:12:19
    #随机取一个列表元素 print(random.choice(a)) #随机获取一个列表数 print(random.choice(b)) #随机获取一个b的字符 import turtle p=turtle.Turtle() p.forward(200) #想前200 p.left(90) #想左90° p.penup() #抬...
  • 看了群主最后成像的图片,应该是循环了36次画方框,每次有10度的偏移。 当然不能提前看答案,自己试着写代码。 之前有用过海龟画图来画过五角星、奥运五环、围棋盘等,所以感觉不难。... turtle.screensize
  • 1.turtle库的基本介绍(1)python计算生态=标准库+第三方库-标准库:随解释器直接安装到操作系统中的功能模块-第三方库:需要经过安装才能使用的功能模块(2)turtle的一个画布空间最小单位是像素2. turtle绘图窗体只有...
  • turtle模块画图画图部分import turtle#窗口标题turtle.title("海龟画图")#建立画布宽,高,背景颜色turtle.screensize(800,600, "green")#颜色,两个参数,画笔颜色和填充颜色,也可以pencolorturtle.color("blue")#...
  • turtle也叫海龟,是turtle绘图体系的python实现,它在1969年诞生,是主要用于程序设计入门,它是python语言的标准之一。 turtle库的原理:如同一只海龟,从正中心开始,在窗口上游走,走过的轨迹形成了绘制的图形,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,854
精华内容 3,541
关键字:

turtle语言