Python基础知识(31):图形界面(Ⅱ)

Python内置了turtle库,可以在计算机上绘图

运动控制:

1、画笔定位到坐标(x,y):turtle.goto(x,y)

2、向正方向运动 distance 长的距离:turtle.forward(distance)

3、向负方向运动 distance 长的距离:turtle.backward(distance)

4、向右偏angle度:turtle.right(angle)

5、向左偏angle度:turtle.left(angle)

6、回到原点:turtle.home()

7、画圆形以radius为半径,extent为圆的角度:turtle.circle(radius, extent=None, steps=None)

8、以speed速度运动:turtle.speed(speed)

一、简单的长方形

width()函数可以设置笔刷宽度,pencolor()函数可以设置颜色

#导入turtle包的所有内容
from turtle import * #设置笔刷宽度
width(5) #前进
forward(200)
#右转90度
right(90) #笔刷颜色
pencolor('red')
forward(100)
right(90) pencolor('green')
forward(200)
right(90) pencolor('blue')
forward(100)
right(90) #调用done()使得窗口等待被关闭,否则将立即关闭窗口
done()

运行上述代码,会自动弹出一个绘图窗口,然后绘制出一个长方形

二、用正方形画圆

60 个正方形每隔 1 度排列,短短几行代码可以生成一个漂亮规则的图形

import turtle
for i in range(360):
turtle.setheading(i)
for i in range(4):
turtle.forward(100)
turtle.left(90)

执行完这个程序大概要几分钟的时间,效果图如下

三、绘制一棵分型树

使用递归绘制一棵分型树

from turtle import *

# 设置色彩模式是RGB:
colormode(255) lt(90) lv = 14
l = 120
s = 45 width(lv) # 初始化RGB颜色:
r = 0
g = 0
b = 0
pencolor(r, g, b) penup()
bk(l)
pendown()
fd(l) def draw_tree(l, level):
global r, g, b
# save the current pen width
w = width() # narrow the pen width
width(w * 3.0 / 4.0)
# set color:
r = r + 1
g = g + 2
b = b + 3
pencolor(r % 200, g % 200, b % 200) l = 3.0 / 4.0 * l lt(s)
fd(l) if level < lv:
draw_tree(l, level + 1)
bk(l)
rt(2 * s)
fd(l) if level < lv:
draw_tree(l, level + 1)
bk(l)
lt(s) # restore the previous pen width
width(w) speed("fastest") draw_tree(l, 4) done()

运行大概要几分钟的时间,效果图如下

参考资料:

1、廖雪峰学习官网:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001542537415495bc2748dc8ceb4d3890301cf8235e3728000

2、不会飞的章鱼:https://www.cnblogs.com/OctoptusLian/p/6363354.html

3、海龟绘图简易教程|Turtle for Python:https://blog.csdn.net/u013468614/article/details/82622497

Python学习之旅(三十二)的更多相关文章

  1. Python学习之旅(十二)

    Python基础知识(11):高级特性 一.分片(切片) 通过索引来获取一定范围内的元素 #字符串 s="Alice" s[0:4:2] 结果: 'Ai' #列表 l=[1,2,3 ...

  2. Python学习笔记(三十二)常用内建模块(1)— datetime

    >>> from datetime import datetime >>> now = datetime.now() # 获取当前datetime >> ...

  3. Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置

    上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义 ...

  4. 学习之路三十二:VS调试的简单技巧

    这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步. 这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧,主要还是一些比较浅显的知识. 1. 调 ...

  5. Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输

    一.UDP套接字 服务端 # udp是无链接的,先启动哪一端都不会报错 # udp没有链接,与tcp相比没有链接循环,只有通讯循环 server = socket.socket(socket.AF_I ...

  6. Python学习笔记【第十二篇】:Python异常处理

    什么是异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 错误类型分为两种:语法错误和业务逻辑错. 异常的类型 AttributeError 试图访问一个对象没有的树形,比如 ...

  7. python学习之旅(十五)

    Python基础知识(14):函数(Ⅴ) 一.装饰器 decorator:本质上就是函数,可以增强函数的功能. 定义起来虽然有点复杂,但使用起来非常灵活和方便 1.不修改被装饰函数的源代码 2.不修改 ...

  8. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)

    简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理.在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下, ...

  9. Python学习笔记:(十二)输入输出

    一.格式化输出 1.str.format()函数,格式化输出值 2.将输出值转变为字符串,可以使用repr()和str() str()函数将返回一个易读的表达式形式: repr()返回一个解释器易读的 ...

  10. 【WPF学习】第三十二章 执行命令

    前面章节已经对命令进行了深入分析,分析了基类和接口以及WPF提供的命令库.但尚未例举任何使用这些命令的例子. 如前所述,RoutedUICommand类没有任何硬编码的功能,而是只表达命令,为触发命令 ...

随机推荐

  1. 【纵谭 Python】系列直播(持续更新)

    老周最近录了一些跟 Python 有关的直播,可以在“一直播”中搜索 ID 号 139251129 关注,也可以在微博中查看,反正都一样,同步的. 第一集:简单胡扯一下相关环境搭建.安装 Python ...

  2. k8s cronjob设置作业失败后退出不重复执行

    Optional parameters backoffLimit: Number of retries for pods launched by the job. If you want your p ...

  3. Android研发中对String的思考(源代码分析)

    1.经常使用创建方式思考: String text = "this is a test text "; 上面这一句话实际上是运行了三件事  1.声明变量 String text; ...

  4. delphi 导出到excel的7种方法

    本文来自 爱好者8888 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kpc2000/article/details/17066823?utm_source=cop ...

  5. [rook] rook的控制流

    以下是rook为一个pod准备可用块存储的过程: 1. rook operator运行,并且在k8s每台机器上运行一个rook agent的pod: 2. 用户创建一个pvc,并指定storagecl ...

  6. (转)常用的 TCP KeepAlive 参数

    socket编程里通过setsockopt系统调用针对单独的socket进行设置,可以覆盖Linux Kernel的选项.举个例子,以我的系统默认设置为例,kernel默认设置的tcpkeepaliv ...

  7. 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题

    response.setContentType("text/html; charset=UTF-8");  Boolean isMultipart = ServletFileUpl ...

  8. GPG

    一.什么是GPG 要了解什么是GPG,就要先了解PGP. 1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP.这个软件非常好用,迅速流传开来,成了许多程序员的必备工 ...

  9. 字节输入流:io包中的InputStream为所有字节输入流的父类。

    字节输入流:io包中的InputStream为所有字节输入流的父类. Int read();读入一个字节(每次一个): 可先使用new  byte[]=数组,调用read(byte[] b) read ...

  10. 我对CopyOnWrite的思考

    CopyOnWrite 后文中表述为 COW CopyOnWrite容器即写的时候复制一个新的容器进行写:通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy ...