鱼C论坛

 找回密码
 立即注册
查看: 6725|回复: 30

[技术交流] Python turtle教程(1)

[复制链接]
回帖奖励 3 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次(中奖概率 10%)
发表于 2020-4-27 19:45:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 乘号 于 2020-4-27 19:47 编辑


                               
登录/注册后可看大图


吼吼,乘号turtle开课咯

话不多说,直接开始。。。

第一个是画椭圆。上一节中描述了如何用turtle画一个圆,或者是一段弧线,但是在很多图形中需要用到椭圆,如何画出一段优美的椭圆,是本篇的第一个知识点。

turtle中有个函数:circle(),其核心就是割圆术,也就是用正多边形来模拟一个圆。我们知道,正8边形比正6边形肯定要更接近一个圆,正16边形比正8边形又更接近一个圆,如果我们能画出一个正120边形,或者正360边形的话,那是非常接近一个圆的。下面就沿着这个思路,来画一个正120边形。不用说,在普通个人电脑上,“正120边形”在我们眼里肯定它就是一个“圆”了。上代码:
import turtle as t
t.pendown()
t.setheading(90)            # 朝上(正北方向)
for j in range(120):        # 重复执行120次
    t.forward(3)            # 移动3个单位
    t.left(3)               # 左转3度
t.penup()
t.done()
  运行这个例子,可以看到turtle从原点出发,按逆时针方向画了一个圆。如果修改forward()中的参数,可以画出不同半径的圆。

  这个画法跟circle()本质上没有区别。但是,却给了我们更大的自由度,来操控这段曲线,例如,修改代码如下:
import turtle as t
t.pendown()
t.setheading(90) 
for j in range(60):         # 重复执行60次
    t.forward(3)
    t.left(3)
t.penup()
t.done()
  将重复运行的次数改为60次,每次还是转动3度,我们就可以得到一段60*3=180度的弧线。在不同的角度区间内,修改画弧的速度,也即修改forward()走的快慢,我样就可以得到一段椭圆弧,看代码:
import turtle as t
t.pendown()
t.setheading(90)
len = 1                     # 设置初始走的速度为1
for j in range(60):
    if j < 30:              # 当j<30,也就是画前一半的弧线
        len += 0.2          # 让速度越走越快
    else:                   # 画后一半弧线
        len -= 0.2          # 让速度越走越慢
    t.forward(len)
    t.left(3)
t.penup()
t.done()
  运行这段代码,可以看到turtle画出了一段椭圆弧。能画成椭圆弧的关键是if-else条件语言的应用。if-else属于分支语句,跟前面学过的顺序、循环共同构成Python语言的三大控制结构。在这个例子中,我们一共画60步弧线,在前30步,让画弧的速度由慢到快,后30步,速度由快到慢,这样不匀速的画法,就形成了一条椭圆弧。

  接下来完善这段代码,画出一个完整的椭圆来:
import turtle as t
t.pendown()
t.setheading(90)
len = 1
for k in range(2):         # 将相同的动作重复做一遍
    for j in range(60):
        if j < 30:
            len += 0.2
        else:
            len -= 0.2
        t.forward(len)
        t.left(3)

t.penup()
t.done()
  运行这段代码,可以看到turtle画出了一个完美的椭圆。相对于上一个例子,我们只增加了一条语句,即
for k in range(2):
,也就是将画上一半弧的方法,在下一半上重复使用一次即可。当然,你也可以通过改变if-else的方法来实现,只会逻辑上要复杂一点。

好辣,第一节课就到这了,拜拜。

最后,如果喜欢的记得评分哦

评分.gif


                               
登录/注册后可看大图


评分

参与人数 2荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 无条件支持楼主!
Hello. + 1 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 19:47:26 | 显示全部楼层
沙发~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 19:54:14 | 显示全部楼层
turtle可以拿来做七段数码表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 19:55:57 | 显示全部楼层
weiter 发表于 2020-4-27 19:54
turtle可以拿来做七段数码表

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 19:58:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 19:59:20 | 显示全部楼层
乘号 发表于 2020-4-27 19:58
这贴。。。沉了?
@zltzlt @Hello. @隔壁繁星吖 @liuzhengyuan @老八秘制

这也沉了???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 20:04:09 | 显示全部楼层
zltzlt 发表于 2020-4-27 19:59
这也沉了???


不然嘞。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 20:05:09 | 显示全部楼层
乘号 发表于 2020-4-27 20:04

不然嘞。。。

技术帖你还指望有多少回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 20:06:18 | 显示全部楼层
zltzlt 发表于 2020-4-27 20:05
技术帖你还指望有多少回复

那你看https://fishc.com.cn/thread-166336-1-1.html
这差距。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 20:08:03 | 显示全部楼层
地心
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 20:13:45 | 显示全部楼层

回帖奖励 +1 鱼币

乘号 发表于 2020-4-27 19:58
这贴。。。沉了?
@zltzlt @Hello. @隔壁繁星吖 @liuzhengyuan @老八秘制

你又换头像了????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 20:14:21 | 显示全部楼层
weiter 发表于 2020-4-27 20:13
你又换头像了????

昨天换的吖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 20:30:12 | 显示全部楼层
我来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 20:31:06 | 显示全部楼层

我这里没看到,是消息提示的时候头像的变化使我察觉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 20:53:47 | 显示全部楼层
这贴又沉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 23:31:25 | 显示全部楼层
感谢@
写的不错啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 07:50:55 | 显示全部楼层
话说 t.circle(半径, 角度) 不就可以了吗???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 08:09:14 | 显示全部楼层
我来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 08:09:59 | 显示全部楼层
第一次没中再来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 10:54:26 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 16:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表