Python学习(一)

您所在的位置:网站首页 奇瑞越野车价格五座国新车报价 Python学习(一)

Python学习(一)

2023-04-15 06:23| 来源: 网络整理| 查看: 265

最近打算开两个新专题,Python学习和C++学习,由于科研有较高的编程需求,自己的编码能力有待提高,希望将学习的过程记录下来。

今天来玩一个好玩的游戏,借助Python海龟绘图进行绘画,并学会其中的编程原理。 参考:(1)https://blog.csdn.net/suoyue_py/article/details/102458661 (2)https://docs.python.org/zh-cn/3/library/turtle.html#turtle.setheading

1 基础介绍 1.1 海龟绘图

“小海龟”turtle是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。 海龟绘图(Turtle Graphics)是python2.6版本中后引入的一个简单的绘图工具,出现在1966年的Logo计算机语言。 海龟绘图(turtle库)是python的内部模块,使用前导入即可 import turtle 海龟有3个关键属性:方向、位置和画笔(笔的属性有色彩、宽度和开/关状态)

1.2 Pycharm 安装和配置

本系统是Ubuntu 18.04,建议大家安装社区版,完全免费。 教程太多了,我就不写了,这里附上一篇,亲测有效。 https://blog.51cto.com/u_15088375/3247761 还需要安装 Anaconda3

1.3 基本元素介绍 1.3.1 画布(canvas)

画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置

设置画布的大小: turtle.screensize(canvwidth=None,canvheight=None,bg=None)

参数分别代表画布的宽、高(单位像素)和背景颜色:

turtle.screensize(800,600,"green") turtle.screensize() #默认返回(400,300,"white")

另一种设置画布大小的方式:

turtle.setup(width=0.5,height=0.75,startx=None,starty=None)

当长和宽是小数时,代表占据整个屏幕的比例;为整数时,代表像素大小。 (startx,starty)代表窗口左上角的位置,如果为空,整个窗口位于屏幕中心。

example:

turtle.setup(width=800,height=0.8) turtle.setup(width=800,height=600,startx=100,starty=200) 1.3.2 画笔(Pen)

使用 turtle.Pen() 来创建画笔对象

import turtle turtle.Pen() turtle.mainloop()#画面保持

代码执行后就建立了画布,同时屏幕中间可以看见箭头(arrow),即所谓的海龟 在海龟绘图中,海龟的起点即画布中央为 (0,0),移动单位是像素 (pixel) 描述海龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中, 就是使用位置方向描述海龟(画笔)的状态 1

1.3.3 绘图命令

绘图命令主要分为三种:

画笔运动命令 画笔控制命令 全局控制命令 2

3 4 部分命令解释和补充:

turtle.circle(radius,extent=None,steps=None)#radius=半径,正负有别,extent代表弧度,steps内切正多边形的边数 turtle.setheading(angle)#转变方向,angle指绝对角度,只改变方向不行进 turtle.done() #停止画笔绘制,但是不关闭窗口 2 绘图举例

在实践中学习!

2.1 绘制正方形 import turtle turtle.setup(800, 400) #调整画板大小 turtle.up() #提起笔 turtle.goto(-50, 50) #调整画板起始点 turtle.down() #放下笔 turtle.color("red") #画笔颜色 turtle.speed(1) #控制绘画速度 # 画图过程 turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) # 保持画面 turtle.mainloop()

5

2.2 绘制太阳花 import turtle as t import time t.color("red", "yellow") t.speed(10) t.begin_fill() for _ in range(25): t.forward(200) t.left(165) t.end_fill() time.sleep(5)

6

2.3 递归绘制树 from turtle import * # 相比于 import turtle as * 这样的区别 # 绘制过程使用递归算法,后续解释 def tree(branchLen, t): if branchLen > 5: t.forward(branchLen) t.right(20) tree(branchLen - 15, t) t.left(40) tree(branchLen - 10, t) t.right(20) t.backward(branchLen) t = Turtle() myWin = t.getscreen() # 获取屏幕 t.speed(0) t.hideturtle() # 隐藏箭头 t.left(90) # 掉转绘制方向朝上 t.up() # 画笔离开 t.backward(300) # 将画笔移动到屏幕下方 t.down() # 画笔落下 t.color("green") #调整画笔颜色 tree(110, t) #调用绘制函数 myWin.exitonclick() # 点击关闭屏幕

7 这种递归方法总体难度还是比较大,大家可以通过Debug的方法来初步进行,了解递归的运行方式。

2.4 绘制旋转多边形 import turtle as t a = 200 t.speed(0) t.color("green") for x in range(1, 37): t.forward(a) t.left(90) t.forward(a) t.left(90) t.forward(a) t.left(90) t.forward(a) t.left(100) t.mainloop()

8

2.5 绘制彩色多边形 import turtle t = turtle.Pen() t.pensize(5) colorValue = 1 colorStep = colorValue / 36 t.speed(0) for x in range(1, 37): colorValue -= colorStep t.color(0.5, 1, colorValue) t.forward(200) t.left(90) t.forward(200) t.left(90) t.forward(200) t.left(90) t.forward(200) t.left(100) turtle.mainloop()

9

2.6 绘制一个五角星 import turtle t=turtle.Pen() t.hideturtle() t.pensize(5) #画笔粗细 t.up() t.goto(-100,50)#画笔移动到画布较为中心的位置 t.down() for i in range(1,6): t.forward(200) t.right(144) turtle.done() #类似Mainloop,一个循环函数,保证画布持续存在

10

2.7 迭代绘制五角星 from turtle import * pen() pencolor("red") speed(0) for i in range(20): forward(i*20) right(144) done()

11

2.8 绘制彩色五角星+说明字符 from turtle import * pensize(5) color("yellow", "red") begin_fill() # 准备填充 for i in range(5): forward(200) right(144) end_fill() # 填充完毕 up() goto(-200, -100) # 将海龟移动到此位置 pencolor("violet") # 颜色选用紫罗兰 write("WQ", False, "left", font=('Arial', 40, 'normal')) # 在当前位置输入字符“WQ”,光标回到左下角,font中三项分别指定字型、字号和形式 done()

12

2.9 绘制小蛇 from turtle import * setup(900, 350, 200, 200) up() fd(-350) down() pensize(25) color("purple") # 控制画笔起始方向 seth(-40) # 绘制蛇身 for i in range(4): circle(60, 80) circle(-60, 80) circle(60, 80 / 2) # 绘制蛇头 fd(60) circle(32, 180) fd(60 * 2 / 3) done()

13

2.10 绘制科赫曲线和科赫雪花 科赫曲线 import turtle def koch(size, n): if n == 0: turtle.fd(size) else: for angle in [0, 60, -120, 60]: turtle.left(angle) koch(size / 3, n - 1) def main(): turtle.setup(800, 400) turtle.up() turtle.goto(-300, -50) turtle.down() turtle.pensize(2) koch(600, 3) turtle.hideturtle() turtle.done() main()

14

科赫雪花

科赫雪花相当于画了三次科赫曲线

#绘制科赫雪花 import turtle def koch(size,n): if n == 0: turtle.fd(size) else: for angle in [0,60,-120,60]: turtle.left(angle) koch(size/3,n-1) def main(): turtle.setup(600,600) turtle.penup() turtle.goto(-200,100) turtle.pendown() turtle.pensize(2) level = 3 #3阶科赫雪花,阶数 koch(400,level) turtle.right(120) koch(400,level) turtle.right(120) koch(400,level) turtle.hideturtle() turtle.done() main()

15 在本讲中,尝试使用海龟绘图模块(类)绘制一些基础图形,学习了一些Python编程的基础知识,当然还有很多都没涉及到,大家可以自行学习!

您可能感兴趣的内容: 【中秋随笔】用Python创意画月饼——满月! ! ! 这几个5.20表白代码发给你女神,还没有女朋友直接来找我! Python turtle库如何瞬间完成作图?难道只难像海龟一样慢慢爬吗? python冲击二级—基本库turtle,海龟绘图详解,史上最全,没有之一 Python|十五个超级炫酷代码


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3