用python可以画的可爱的图形_用Python的Turtple画图形

不知道各位是否还记得在小学或者初中的时候,我们接触过一种语言叫做logo语言,这个语言可以画正方形,画三角形,画圆。而用Python画图形也有点类似logo语言的意思。

在画图之前,我们需要启动一个模块,turtple。然后在这个turtple下有一个属性叫pen,顾名思义就是画笔的意思。当输入完pen这个属性的时候,idle会打开一个叫Python Turtle Graphics的东西,在屏幕中间有一个三角的原点,这个点就有点类似logo的点,我们就是操作它来回移动留下痕迹。在idle里写完一句话,后面的Graphics就会画一道,然后再写一句话,再画一道。如果是直接的.py文件,那么就会按步骤的出现图形。import turtple

t=turtple.Pen() #设定这个t就是整个的变量,注意大写P

让原点前进50个像素:t.forward(50)

让原点左转90度:t.left(90)

让原点右转30度:t.right(30)

让原点抬起来:t.up() #这样使用forward就不会留下痕迹,因为笔在纸面上抬起来了嘛

让原点落下:t.down()

让原点是蓝色:t.color("blue")

需要使用蓝色填充图案:t.begin_fill() #需要和上面的语句搭配

填充图案停止:t.end_fill()

清空左右图案并且原点回到原始位置:t.reset()

让原点移动到(70,100)的位置:t.goto(70,100) #注意中间是逗号,默认整个图案是四象限的

了解了上面的几个简单语句,就可以画一个八边形,比如这个图:

wKioL1c_G8ijLP1uAABke6ok2YM677.png

这个图的程序就比较灵活了:import time

import turtle

#x边形内角和180*(x-3)

#函数:给出大小和顶点数绘制星星

#size:星星的核心是个等边多边形,这是该多边形的顶点到其中心的距离

#point:顶点数

def funcDrawStar(size, point):

t = turtle.Pen()

#调校坐标位置

t.up()

t.backward(200)

t.right(90)

t.forward(100)

t.left(90)

t.down()

#开始画图

t.color(1, 0, 0)

t.begin_fill()

for x in range(1, point * 2 + 1):

t.forward(size)

if x % 2 == 0:

t.left(120)

else:

t.right(180 * (point - 2) / point - 60)

t.end_fill()

#funcDrawStar(100, 6)

funcDrawStar(100, 9)

time.sleep(5)

上面都是一些简单的应用,但是要知道python也是可以画出来美妙的图形的,比如下图:

wKiom1c_GEyDBxhSAAB1vJJy87k758.png

这个图形的代码如下(代码是转载的,感谢大牛分享,python 3.5亲测好使,而且整个过程非常美妙,强烈推荐各位感受一下。)from numpy import *

from random import random

import turtle

turtle.reset()

x = array([[.5],[.5]])

p = [0.85,0.92,0.99,1.00]

A1 = array([[.85, 0.04], [-0.04,.85]])

b1 = array([[0],[1.6]])

A2 = array([[0.20,-0.26], [0.23,0.22]])

b2 = array([[0],[1.6]])

A3 = array([[-0.15,0.28],[0.26,0.24]])

b3 = array([[0],[0.44]])

A4 = array([[0,0], [0,0.16]])

turtle.color("red")

cnt = 1

while True:

cnt += 1

if cnt == 2000:

break

r = random()

if r < p[0]:

x = dot(A1 , x) + b1

elif r < p[1]:

x = dot(A2 , x) + b2

elif r < p[2]:

x = dot(A3 , x) + b3

else:

x = dot(A4 , x)

#print x[1]

turtle.up()

turtle.goto(x[0][0] * 50,x[1][0] * 40 - 240)

turtle.down()

turtle.dot()

原文地址:http://chenx1242.blog.51cto.com/10430133/1775558

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值