蓝桥杯Python初级测试题之Turtle画图

写这个主要是为了辅助和讲解过蓝桥杯的初级测试,难度并不高,重点在于解析过程。

  1. 画圆形和以及菱形阵列

    思路:
    第1步: 设置整体参数,如循环画菱形的次数为n=12,每次旋转的角度angle
    第2步: 设置画笔颜色为红,画半径120圆
    第3步: 回到圆心,按照n做循环,
    第4步: 设置画笔为绿色,填充为黄色,拆分画菱形的步骤进行循环
    第4步菱形步骤拆解,这个很重要,因为是12个循环步骤,主要每次出发相对的方向是一致的,那么操作就只用写好0°的就可以了。
import turtle as t
# 第1步: 设置绘制次数以及每次旋转角度,题目要求隐藏画笔
times = 12
angle = 360 / times
t.hideturtle()
# 第2步: 设置画笔颜色为红,画半径120圆,先移动120距离方便画圆
t.pencolor("red")
t.penup()
t.goto(0, -120)
t.pendown()
t.circle(120)
# 第3步: 回到圆心,按照n做循环,设置线条颜色为黑色,填充颜色为黄色
t.penup()
t.home()
t.color("black", "yellow")
# 第4步: 拆分画菱形的步骤进行循环
for i in range(times):# 次增加1个分割角度anglet.seth(angle * i)t.penup()t.forward(120)t.pendown()# 绘制菱形,左转30,走80,右转60,走80,再右转120,走80,再右转60,走80,回到起点# 以上可以在0°时,用笔试画一下t.begin_fill()t.left(30)t.forward(80)t.right(60)t.forward(80)t.right(120)t.forward(80)t.right(60)t.forward(80)t.end_fill()# 回原点t.penup()t.home()
#结束绘图
t.done
  1. 画二叉树

    动作分解: 每次分叉都是原来的一支分为两支,看上去是一个递归动作,角度看差不多,先按60°作为初始,题目也不明确要求角度
    思路:1.设计一个递归的分叉函数,起始点都在中心往平分方向,往左走到分叉点记录坐标和朝向x,y,heading为一个数组pos1,增加到坐标点数组中;再回到起始点往右走到分差点记录坐标和朝向x,y,heading为一个数组pos2,每一层都从哪输入的数组参数中提取坐标和朝向作为新的起始点完成一次画二叉树的操作。逻辑比较清晰,但是写起来比较麻烦。
    用到的三个取分叉点位置和方向的关键函数:
    turtle.xcor() 返回海龟的 x 坐标
    turtle.ycor() 返回海龟的 y 坐标
    turtle.heading() 返回海龟的朝向
    用到的三个设置分叉点位置和方向的关键函数:
    turtle.setx(x) 参数x – 一个数值 (整型或浮点型) 设置海龟的横坐标为 x,纵坐标保持不变。
    turtle.sety(y) 参数y – 一个数值 (整型或浮点型) 设置海龟的纵坐标为 y,横坐标保持不变。
    turtle.seth(to_angle)参数to_angle – 一个数值 (整型或浮点型) 设置海龟的朝向为 to_angle
import turtle as t# 定义初始边长和角度
leng = 60
angle = 60
# 初始化角度向上
t.seth(90)# 定义一个子函数,从输入的数组[[X,Y,heading]]提取多个点坐标和方向用于画二叉树
# 同时把二叉树的两个树杈点和方向存到数组里
def draw_ercha(l1, list_posx=[[]]):# 如果输入点数组为空,则结束函数返回空数组if len(list_posx) == 0:return list_posxlist_posx2 = []for ls in list_posx:x = ls[0]y = ls[1]ang = ls[2]t.setx(x)t.sety(y)t.seth(ang)t.pendown()t.left(angle / 2)t.forward(l1)# 存储左上角点坐标和方向pos1 = [t.xcor(), t.ycor(), t.heading()]t.penup()t.forward(l1 * -1)t.pendown()t.right(angle)t.forward(l1)# 存储右上角点坐标和方向pos2 = [t.xcor(), t.ycor(), t.heading()]t.penup()# 回到起始点t.forward(l1 * -1)t.left(angle / 2)list_posx2.append(pos1)list_posx2.append(pos2)return list_posx2# 用一个点数组记录每次画叉的起点
# 第一次起点为0,0且只有1个点,分叉次数为4
times = 4
run = 1
list_pos = [[0, 0, 90]]
# 画第一个二叉树,返回数顶部的两个点位置和方向
list_pos = draw_ercha(leng, list_pos)
while len(list_pos) > 0 and run < times:# 每层分支长度减6leng -= 6list_pos = draw_ercha(leng, list_pos)run += 1

画出的效果如下,与题目要求类似:

蓝桥杯Python初级组测试题之Turtle画图相关推荐

  1. 蓝桥杯Python初级组测试题之Turtle画图2

    蓝桥杯Python初级组测试题之Turtle画图2 1. 画8个内接正五边形 题目描述 解题思路 (1) 共有n=8个正五边形,因而有8次循环,每次旋转角度增加ang=360/n (2) 画内接正五边 ...

  2. 第十三届蓝桥杯Python B组国赛题解

    第十三届蓝桥杯Python B组国赛题解 试题A:斐波那契与7 试题 B: 小蓝做实验 试题 C: 取模 试题 D: 内存空间 试题 E: 近似 GCD 试题 F: 交通信号 试题 G: 点亮 试题 ...

  3. 2022蓝桥杯 Python研究生组

    经过二十天的准备,蓝桥杯拿到了Python研究生组省二,也算是一个还可以的结果了. 今年由于疫情,我这边改成了线上比赛,题型也变了,由原来的五个填空+五个编程,改成了两个填空+八个编程. 也是到了邻近 ...

  4. 2022年第十三届蓝桥杯 python B组 第B题 寻找整数

    刚拿到这个题时用了很多方法,但都会花费大量的时间,后来我去补习了关于余数的知识--<中国剩余定理>##好像是小学数学知识..## 终于做出了该题. #######常识 1,首先我们要加深对 ...

  5. 十二届蓝桥杯python青少年组第五题——密室逃脱

    密室逃脱 提示信息: 有一个密室逃脱游戏,有100间密室连在一排.密室编号是从1开始连续排列一直排到第100间密室,如下图: 游戏规则: 玩家初始位置在1号密室: 每次玩家可以进入右边的一个密室,也可 ...

  6. 第十一届蓝桥杯python大学组国赛真题

    试题 A: 美丽的 2 [问题描述] 小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴. 他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2? 这道题送分题 ...

  7. 2023.05.14十四届蓝桥杯青少组中高级组省赛Python

    蓝桥杯大赛青少组 第十四届蓝桥杯Python中级组省赛 选择题: T1. 编程题  LQSS14PB01 时间限制: 3000MS 内存限制: 589824KB 题目描述:(注.input()输入函数 ...

  8. 第十三届蓝桥杯Python 大学B组真题详解

    第十三届蓝桥杯Python B组真题详解 试题A 排列字母 试题B 寻找整数 试题C 纸张尺寸 试题D 位数排序 试题E 蜂巢 试题F 消除游戏 试题G 全排列的价值 试题H 技能升级 试题I 最长不 ...

  9. 蓝桥杯Python这一篇就够了-训练系统题库合集(包括VIP试题)数据结构与算法

    第一版写于2020-11-13,第十一届蓝桥杯国赛前夕,老师和同学建议说写博文可以让学习更高效,陆陆续续写一些题解和学习笔记,在我的代码中我加了很多有助于理解程序的注释,希望这篇博客可以帮助你在蓝桥杯 ...

最新文章

  1. 大佬算法校招经验总结(拼多多、小米、华为、百度等)
  2. 【BZOJ 4555】[Tjoi2016Heoi2016]求和 多项式求逆/NTT+第二类斯特林数
  3. Javascript创建节点
  4. android 屏幕保持唤醒 不锁屏 android.permission.WAKE_LOCK
  5. ajax提交手机号去数据库验证并返回状态值
  6. LeetCode 694. 不同岛屿的数量(BFS/DFS+set)
  7. 全网最详细 Python如何读取NIFTI格式图像(.nii文件)和 .npy格式文件和pkl标签文件内容
  8. nlogn求最长不上升子序列
  9. HTML网页实训的目的,网页设计实习目的及意义.doc
  10. PHP 大文件下载(方式3 支持断点续传)
  11. 图像处理笔记(十七):再看傅里叶变换
  12. Debian系、红帽系、Arch Linux系如何选择安装包
  13. unityar自动识别人脸_unity人脸识别源码Dlib FaceLandmark Detector
  14. jsp实现简单购物车页面
  15. python - 1024 Spider
  16. 试用期、见习期、实习期、合同期、服务期的区别与应用
  17. AirPods声音越来越小问题
  18. 关于64位windows7系统下安装IE11失败(9c59)的解决过程记录
  19. vue遍历输出列表中以逗号隔开的字符串
  20. 浮点数存储方式理解,浮点数和整数之间的转换

热门文章

  1. 七上十一课用计算机写作教案,长春版七上写作课教案-《属对》
  2. Keil(C51)安装与注册
  3. 2020年9月程序员工资最新统计
  4. 计算机丢失quartz.dll什么意思,电脑系统提示没有找到quartz.dll该怎么办
  5. python基本数_python--基本数据类型
  6. marvell yukon 88e8056驱动
  7. 若要赞美晴天 请等到黄昏之后
  8. 电子配线架何去何从?
  9. DTV/IPTV区别
  10. mysql宕机恢复_mysql突然宕机后事务如何处理?