Python入门必学,用Python练习画个美队盾牌
0 环境
Python版本:3.6.6
操作系统:Mac OS Mojave 10.14.2
1 引言
最近我媳妇每天晚上吃饭时候也拿手机看,上厕所也在看。
看着看着还会笑?WTF?你在干嘛呢?
没错,她在看美队……
这男人比我帅?……
比我有钱?……
还是比我有腔调?……
答案很明显,我相信你们的眼睛都是雪亮的。
那问题来了,作为一个男人,怎么能忍?虽然是个明星,虽然是假的,虽然已经挽回不了败局了……那我就送个美队的盾牌给你吧……
这篇文章不是Turtle的入门篇,所以关于基本的画笔使用小胖不在这篇里赘述了。有兴趣的可以留言,我会根据你们的反馈来写一篇或者一个系列。
2 实战
先来看一个效果图:
用过Turtle的都知道,画笔是需要抬手和落笔的。这一点一定要理解,因为计算机是很死板的,你的每一个动作都必须告诉他,包括GC。
所以你的画笔一旦落下,经过的每一处都会留下字迹。如果希望隔开一段距离就需要经过「抬笔」->「移动画笔」->「落笔」。
所以我们先把这个动作封装成一个函数:
def setpen(x, y):
# 抬笔
t.penup()
# 移动画笔到(x, y)
t.goto(x, y)
# 落笔
t.pendown()
t.setheading(0)
接下来就来画盾牌。盾牌的话,注意观察美队盾牌,颜色是「红」->「白」->「红」->「蓝」。
这里有一个技巧,就是后面填充的圆圈背景色是可以覆盖之前画的圆圈的背景色。
def circle(x, y, r, color):
# 为了保证画出的圆够圆,所以我们把圆的边设置的多一些
n = 36
angle = 360 / n
pi = 3.1415926
# 周长
c = 2 * pi * r
# 每条边的长度
l = c / n
# 起始位置
start_x = x - l / 2
start_y = y + r
# 移动画笔
setpen(start_x, start_y)
# 选择画笔颜色
t.pencolor(color)
# 选择背景色
t.fillcolor(color)
# 填充
t.begin_fill()
for i in range(n):
t.forward(l)
t.right(angle)
t.end_fill()
接下来就是画里面那个白色的五角星了,这里就不注释了,因为和画圈的过程差不多。
def five_star(l):
setpen(0, 0)
t.setheading(162)
t.forward(150)
t.setheading(0)
t.fillcolor('WhiteSmoke')
t.begin_fill()
t.hideturtle()
t.penup()
for i in range(5):
t.forward(l)
t.right(144)
t.end_fill()
主函数:
def sheild():
circle(0, 0, 300, 'red')
circle(0, 0, 250, 'white')
circle(0, 0, 200, 'red')
circle(0, 0, 150, 'blue')
five_star(284)
if __name__ == '__main__':
sheild()
# 结束乌龟图
turtle.done()
3 总结
这是一篇用Python画画的文章,更多有趣、好玩的Python应用、实战尽在知识星球「人人都是Pythonista」。
关注公众号「Python专栏」,回复:美队盾牌,获取全套代码!
Python入门必学,用Python练习画个美队盾牌的更多相关文章
- Python 入门必学经典知识点笔记【肯定有你不知道的】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...
- Python入门必学:数据类型和变量的用法
什么是数据类型?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据, ...
- Python入门必学:字符串和编码正确的使用方法
字符编码,我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特 ...
- Python入门必学:递归函数正确的操作使用方法,案例详解
递归函数,在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以 ...
- 基于flask的可视化动漫分析网站【python入门必学】
课程设计项目名称:基于flask的可视化动漫分析网站,如果你在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而而流一思(数 ...
- Python入门必学知识,30万年薪Python工程师带你学
Python是一种计算机编程语言.计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能 ...
- Python 入门必学的8个知识点
文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论
- [新手必备]Python 基础入门必学知识点笔记
Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...
- python入门灵魂5问--python学习路线,python教程,python学哪些,python怎么学,python学到什么程度
一.python入门简介 对于刚接触python编程或者想学习python自动化的人来说,基本都会有以下python入门灵魂5问--python学习路线,python教程,python学哪些,pyth ...
随机推荐
- 文件操作命令(replace)
Replace 命令: // 描述: 替换文件. // 语法: REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W ...
- Moving or disabling the package cache for Visual Studio 2017
Moving or disabling the package cache for Visual Studio 2017 | Setup & Install by Heath Stewart ...
- ----regular expression in js----
正则表达式:Regular Expression,在代码中常简写为regex.regexp或RE)使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索模式. 搜索模式可用于文本搜索和文本替换. ...
- MyBatis 一级缓存,二级缓存,延迟加载设置
1 什么是延迟加载 resultMap中的association和collection标签具有延迟加载的功能. 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息.使用关联信息时再 ...
- Innodb 状态的部分解释
Innodb_buffer_pool_pages_data Innodb buffer pool缓存池中包含数据的页的数目,包括脏页.单位是page. Innodb_buffer_pool_pages ...
- Oracle中特殊的变量类型
1.%TYPE 允许用户动态地将数据库中某一列的数据类型与PL/SQL中某个变量关联.语法如下: variable_name table.column%TYPE 2.%ROWTYPE 允许用户定义 ...
- python3+ selenium3开发环境搭建
环境搭建 基于python3和selenium3做自动化测试,俗话说:工欲善其事必先利其器:没有金刚钻就不揽那瓷器活,磨刀不误砍柴工,因此你必须会搭建基本的开发环境,掌握python基本的语法和一个I ...
- 2019.03.28 bzoj3595: [Scoi2014]方伯伯的Oj(splay+map+set)
传送门 题意简述: 给一个有优先级的nnn个人的序列,初始的时候第iii个人排名为iii,现在有mmm个操作,种类如下: 把编号为xxx的改成yyy,输出改前xxx的排名 把编号为xxx放到队首,输出 ...
- c语言结构体定义的几种形式
转自https://blog.csdn.net/ziguo2010/article/details/79897327 1.最常用定义方式:定义结构体data,此时结构体相当于一个类型,比如int,如需 ...
- asp.net动态加载程序集创建指定类的实例及调用指定方法
以下类中有三个方法: LoadAssembly:加载指定路径的程序集 GetInstance:根据Type动态获取实例,用泛型接到返回的类型 ExecuteMothod:执行实例中的指定方法 /// ...