时间已来到二月,情人节就要到了。在今年的特殊环境下,想必很多人都要和自己的心上人异地相隔过节了(比如久久不被允许返校的学生党),那么如何给自己的男/女朋友送上一份惊喜呢?如果你的对象恰巧会那么一点python,不妨试试利用python的第三方库turtle,略表自己心意吧。
先放一张成品图:

前辈曾曰过,“人生苦短,我用python”,python强大的第三方库可以让各种编程想法得到迅速实现。用python来画图实好比叫猛张飞来做针线活儿,要的就是这种反差萌。
首先,打开编译器,导入需要用到的库:

import turtle as t
import time

写上文字,画大白:

#初始化画布
t.setup(width=800, height=600)time.sleep(2)
#上部文字
t.hideturtle()
t.color("#FF6A6A")
t.penup()
t.goto(-300,220)
words1 = '当'
words2 = ['送','给','小','可','爱']
for i in range(4):t.write(words1, font=("华文彩云", 3*i+14, "bold"))t.forward(20+3*i)time.sleep(0.15)
t.forward(8)
t.write("!", font=("华文彩云", 23, "bold"))
t.forward(20)
time.sleep(0.5)
for word in words2:t.write(word, font=("华文彩云", 26, "bold"))t.forward(35)time.sleep(0.4)
t.write(":", font=("华文彩云", 23, "bold"))
t.forward(35)
#大白
#头
t.goto(-100,150)
t.right(90)
t.color("black")
t.pensize(1)
t.pendown()
size = 0.6
a = 0.8*size
for i in range(120): if 0 <= i < 30 or 60 <= i < 90:  a = a + 0.2*sizet.left(3)  # 向左转3度  t.forward(a)  # 向前走a的步长  else:  a = a - 0.2*sizet.left(3)  t.forward(a)
t.penup()
#眼睛
time.sleep(0.5)
t.goto(-70,150)
t.dot(14)
time.sleep(0.5)
t.goto(-24,150)
t.dot(14)
time.sleep(0.5)
t.right(60)
t.pendown()
t.speed(2)
t.circle(-50,50)
#身体
t.penup()
t.goto(-89.85,131.47)
t.left(65)
t.pendown()
t.circle(250,60)
t.penup()
t.goto(-2.64,133.09)
t.left(30)
t.pendown()
t.circle(-250,60)
t.right(20)
t.circle(-134,110)
#腿
t.penup()
t.left(135)
t.goto(-120,-145)
t.pendown()
t.circle(120,45)
t.left(15)
t.circle(42,80)
t.left(50)
t.forward(70)
t.penup()
t.back(70)
t.pendown()
t.right(130)
t.circle(42,80)
t.left(15)
t.circle(115,48)
t.penup()
#胳膊
t.goto(-125,89)
t.pendown()
t.left(112)
t.circle(250,50)
t.circle(50,45)
t.circle(20,80)
t.circle(50,45)
t.circle(180,16)
t.penup()
t.goto(31,90)
t.pendown()
t.right(126)
t.circle(-250,50)
t.circle(-50,45)
t.circle(-20,80)
t.circle(-50,45)
t.circle(-180,14)
#手
t.penup()
t.goto(-208,-90)
t.pendown()
t.left(150)
t.right(180)
t.circle(-30,20)
t.penup()
t.goto(-208,-90)
t.right(160)
t.pendown()
t.circle(30,40)
t.circle(5,120)
t.circle(40,40)

画上玫瑰花,玫瑰花的代码源自网上,自己调整了下位置和大小参数(在注释行标出)

#画玫瑰
t.penup()
t.goto(-270,60)
t.pendown()
#玫瑰花角度
t.right(60)
#玫瑰花大小
size=0.35
# 花蕊
t.fillcolor("#EE0000")
t.begin_fill()
t.circle(10*size, 180)
t.circle(25*size, 110)
t.left(50)
t.circle(60*size, 45)
t.circle(20*size, 170)
t.right(24)
t.forward(30*size)
t.left(10)
t.circle(30*size, 110)
t.forward(20*size)
t.left(40)
t.circle(90*size, 70)
t.circle(30*size, 150)
t.right(30)
t.forward(15*size)
t.circle(80*size, 90)
t.left(15)
t.forward(45*size)
t.right(165)
t.forward(20*size)
t.left(155)
t.circle(150*size, 80)
t.left(50)
t.circle(150*size, 90)
t.end_fill()
# 花瓣1
t.left(150)
t.circle(-90*size, 70)
t.left(20)
t.circle(75*size, 105)
t.setheading(80)
t.circle(80*size, 98)
t.circle(-90*size, 40)
# 花瓣2
t.left(180)
t.circle(90*size, 40)
t.circle(-80*size, 98)
t.setheading(-63.5)
# 叶子1
t.forward(30*size)
t.left(90)
t.forward(25*size)
t.left(45)
t.fillcolor("#00CD00")
t.begin_fill()
t.circle(-80*size, 90)
t.right(90)
t.circle(-80*size, 90)
t.end_fill()
t.right(135)
t.forward(60*size)
t.left(180)
t.penup()
t.forward(85*size)
t.pendown()
t.left(90)
t.forward(80*size)
# 叶子2
t.right(90)
t.right(45)
t.fillcolor("#00CD00")
t.begin_fill()
t.circle(80*size, 90)
t.left(90)
t.circle(80*size, 90)
t.end_fill()
t.left(135)
t.forward(60*size)
t.left(180)
t.forward(60*size)
t.right(90)
t.circle(-1000*size,8.6)
t.penup()
t.goto(-200,-110)
t.pendown()
t.circle(-1000*size,10)

最后,写上情人节快乐:

#情人节快乐
words3 = ['情','人','节','快','乐','!']
t.penup()
t.color("#FF6A6A")
t.goto(30,220)
t.setheading(0)
for word in words3:t.write(word, font=("华文彩云", 26, "bold"))t.forward(35)time.sleep(0.4)
t.done()

至此贺卡部分就完工了。为了留有互动空间,我利用turtle库里的textinput函数可以弹出会话框的功能,为贺卡设置了密码,效果是这样的:




打开贺卡之前先让他/她猜猜密码,文字可以自己DIY:

#密码部分
str=t.textinput("情人节快乐!","小可爱你好呀,这是白白送你的节日贺卡,你要输入正确的密码才能打开哦")
if (str!='2019-10-06'):str=t.textinput("Sorry","密码不对哦,提示一下是八位数字,再输一次吧")if (str=='20191006'):str=t.textinput("HaHaHaHa","宝贝儿真棒,其实你已经猜对啦,密码格式是‘XXXX-XX-XX’,再输一次吧")while(str!='2019-10-06'):str=t.textinput("HaHaHaHa","是我们在一起的日子呀,格式是‘XXXX-XX-XX’,再输一次吧")elif (str!='2019-10-06'):str=t.textinput("Sorry","是一个对我们很有意义的日子哦")if (str=='20191006'):str=t.textinput("HaHaHaHa","宝贝儿真棒,其实你已经猜对啦,密码格式是‘XXXX-XX-XX’,再输一次吧")while(str!='2019-10-06'):str=t.textinput("HaHaHaHa","密码是我们在一起的日子呀,格式是‘XXXX-XX-XX’,再输一次吧")elif (str!='2019-10-06'):str=t.textinput("Sorry","提示最后一次啦,是我们的纪念日呀")if (str=='20191006'):str=t.textinput("HaHaHaHa","宝贝儿真棒,其实你已经猜对啦,密码格式是‘XXXX-XX-XX’,再输一次吧")while(str!='2019-10-06'):str=t.textinput("HaHaHaHa","密码是我们在一起的日子呀,格式是‘XXXX-XX-XX’,再输一次吧")else:while(str!='2019-10-06'):str=t.textinput("Sorry","密码是我们在一起的日子呀,格式是‘XXXX-XX-XX’,再输一次吧")

也就是if-else语句啦。
愿天下有情人终成眷属,愿这场灾难早日结束,附上完整代码,密码是2019-10-06

# -*- coding: utf-8 -*-
"""
Created on Wed Jan 29 16:51:51 2020@author: user
"""import turtle as t
import time #密码部分
str=t.textinput("情人节快乐!","小可爱你好呀,这是白白送你的节日贺卡,你要输入正确的密码才能打开哦")
if (str!='2019-10-06'):str=t.textinput("Sorry","密码不对哦,提示一下是八位数字,再输一次吧")if (str=='20191006'):str=t.textinput("HaHaHaHa","宝贝儿真棒,其实你已经猜对啦,密码格式是‘XXXX-XX-XX’,再输一次吧")while(str!='2019-10-06'):str=t.textinput("HaHaHaHa","是我们在一起的日子呀,格式是‘XXXX-XX-XX’,再输一次吧")elif (str!='2019-10-06'):str=t.textinput("Sorry","是一个对我们很有意义的日子哦")if (str=='20191006'):str=t.textinput("HaHaHaHa","宝贝儿真棒,其实你已经猜对啦,密码格式是‘XXXX-XX-XX’,再输一次吧")while(str!='2019-10-06'):str=t.textinput("HaHaHaHa","密码是我们在一起的日子呀,格式是‘XXXX-XX-XX’,再输一次吧")elif (str!='2019-10-06'):str=t.textinput("Sorry","提示最后一次啦,是我们的纪念日呀")if (str=='20191006'):str=t.textinput("HaHaHaHa","宝贝儿真棒,其实你已经猜对啦,密码格式是‘XXXX-XX-XX’,再输一次吧")while(str!='2019-10-06'):str=t.textinput("HaHaHaHa","密码是我们在一起的日子呀,格式是‘XXXX-XX-XX’,再输一次吧")else:while(str!='2019-10-06'):str=t.textinput("Sorry","密码是我们在一起的日子呀,格式是‘XXXX-XX-XX’,再输一次吧")#初始化画布
t.setup(width=800, height=600)time.sleep(2)
#上部文字
t.hideturtle()
t.color("#FF6A6A")
t.penup()
t.goto(-300,220)
words1 = '当'
words2 = ['送','给','小','可','爱']
words3 = ['情','人','节','快','乐','!']
for i in range(4):t.write(words1, font=("华文彩云", 3*i+14, "bold"))t.forward(20+3*i)time.sleep(0.15)
t.forward(8)
t.write("!", font=("华文彩云", 23, "bold"))
t.forward(20)
time.sleep(0.5)
for word in words2:t.write(word, font=("华文彩云", 26, "bold"))t.forward(35)time.sleep(0.4)
t.write(":", font=("华文彩云", 23, "bold"))
t.forward(35)
#大白
#头
t.goto(-100,150)
t.right(90)
t.color("black")
t.pensize(1)
t.pendown()
size = 0.6
a = 0.8*size
for i in range(120): if 0 <= i < 30 or 60 <= i < 90:  a = a + 0.2*sizet.left(3)  # 向左转3度  t.forward(a)  # 向前走a的步长  else:  a = a - 0.2*sizet.left(3)  t.forward(a)
t.penup()
#眼睛
time.sleep(0.5)
t.goto(-70,150)
t.dot(14)
time.sleep(0.5)
t.goto(-24,150)
t.dot(14)
time.sleep(0.5)
t.right(60)
t.pendown()
t.speed(2)
t.circle(-50,50)
#身体
t.penup()
t.goto(-89.85,131.47)
t.left(65)
t.pendown()
t.circle(250,60)
t.penup()
t.goto(-2.64,133.09)
t.left(30)
t.pendown()
t.circle(-250,60)
t.right(20)
t.circle(-134,110)
#腿
t.penup()
t.left(135)
t.goto(-120,-145)
t.pendown()
t.circle(120,45)
t.left(15)
t.circle(42,80)
t.left(50)
t.forward(70)
t.penup()
t.back(70)
t.pendown()
t.right(130)
t.circle(42,80)
t.left(15)
t.circle(115,48)
t.penup()
#胳膊
t.goto(-125,89)
t.pendown()
t.left(112)
t.circle(250,50)
t.circle(50,45)
t.circle(20,80)
t.circle(50,45)
t.circle(180,16)
t.penup()
t.goto(31,90)
t.pendown()
t.right(126)
t.circle(-250,50)
t.circle(-50,45)
t.circle(-20,80)
t.circle(-50,45)
t.circle(-180,14)
#手
t.penup()
t.goto(-208,-90)
t.pendown()
t.left(150)
t.right(180)
t.circle(-30,20)
t.penup()
t.goto(-208,-90)
t.right(160)
t.pendown()
t.circle(30,40)
t.circle(5,120)
t.circle(40,40)#画玫瑰
t.penup()
t.goto(-270,60)
t.pendown()
#玫瑰花角度
t.right(60)
#玫瑰花大小
size=0.35
# 花蕊
t.fillcolor("#EE0000")
t.begin_fill()
t.circle(10*size, 180)
t.circle(25*size, 110)
t.left(50)
t.circle(60*size, 45)
t.circle(20*size, 170)
t.right(24)
t.forward(30*size)
t.left(10)
t.circle(30*size, 110)
t.forward(20*size)
t.left(40)
t.circle(90*size, 70)
t.circle(30*size, 150)
t.right(30)
t.forward(15*size)
t.circle(80*size, 90)
t.left(15)
t.forward(45*size)
t.right(165)
t.forward(20*size)
t.left(155)
t.circle(150*size, 80)
t.left(50)
t.circle(150*size, 90)
t.end_fill()
# 花瓣1
t.left(150)
t.circle(-90*size, 70)
t.left(20)
t.circle(75*size, 105)
t.setheading(80)
t.circle(80*size, 98)
t.circle(-90*size, 40)
# 花瓣2
t.left(180)
t.circle(90*size, 40)
t.circle(-80*size, 98)
t.setheading(-63.5)
# 叶子1
t.forward(30*size)
t.left(90)
t.forward(25*size)
t.left(45)
t.fillcolor("#00CD00")
t.begin_fill()
t.circle(-80*size, 90)
t.right(90)
t.circle(-80*size, 90)
t.end_fill()
t.right(135)
t.forward(60*size)
t.left(180)
t.penup()
t.forward(85*size)
t.pendown()
t.left(90)
t.forward(80*size)
# 叶子2
t.right(90)
t.right(45)
t.fillcolor("#00CD00")
t.begin_fill()
t.circle(80*size, 90)
t.left(90)
t.circle(80*size, 90)
t.end_fill()
t.left(135)
t.forward(60*size)
t.left(180)
t.forward(60*size)
t.right(90)
t.circle(-1000*size,8.6)
t.penup()
t.goto(-200,-110)
t.pendown()
t.circle(-1000*size,10)#情人节快乐
t.penup()
t.color("#FF6A6A")
t.goto(30,220)
t.setheading(0)
for word in words3:t.write(word, font=("华文彩云", 26, "bold"))t.forward(35)time.sleep(0.4)t.done()

Python turtle库的应用实例——画大白(情人节表白神器)相关推荐

  1. 用Python Turtle库画一个萌化的蜘蛛侠

    你是从什么时候开始喜欢上漫威电影的?美国队长,钢铁侠,雷神? 我先入坑的是因为看了蜘蛛侠,小时候看完就幻想着什么时候自己也能成为一个英雄,我觉得第一代蜘蛛侠刻画得是最好的,也是给我印象最深刻的一代蜘蛛 ...

  2. python turtle画椭圆-python turtle 绘制太极图的实例

    效果如下所示: # -*- coding: utf-8 -*- import turtle # 绘制太极图函数 def draw_TJT(R): turtle.screensize(800, 600, ...

  3. python random库画多彩蟒蛇,Python Turtle库绘制蟒蛇

    使用Python Turtle库来绘制蟒蛇 import turtle引入了海龟绘图体系 使用setup函数,设定了一个宽650像素和高350像素的窗体,其位置左上角坐标是200,200 说明位置在距 ...

  4. python turtle库画七彩蟒蛇_Python Turtle库绘制蟒蛇

    使用Python Turtle库来绘制蟒蛇 import turtle引入了海龟绘图体系 使用setup函数,设定了一个宽650像素和高350像素的窗体,其位置左上角坐标是200,200 说明位置在距 ...

  5. 用python 之turtle库(模块)画太极图、楼梯等

    用python 之turtle库(模块)画太极图.楼梯等 画简易的太极图 代码如下: import turtle t=turtle.Turtle() t.up() t.goto(0,-50)#设置起始 ...

  6. python画史迪仔_Python turtle画图 使用python turtle库实现了动漫人物史迪仔的绘制 - 下载 - 搜珍网...

    使用python turtle库实现了动漫人物史迪仔的绘制,画图过程尽量细分将每一个拐角都反复调整角度,直到合适为止,大概耗费了五六个小时的时间绘制成功(Using the python turtle ...

  7. python turtle库setpos_Python内置海龟(turtle)库绘图命令详解(二)

    继续谈利用海龟库(turtle库)做图.在这篇文章(Python内置海龟(turtle)库绘图命令详解(一))中已经介绍了turtle的一些基本画图命令,包括画布的设计.画笔属性与状态的设置以及画笔的 ...

  8. python中turtle怎么确定坐标_关于Python turtle库使用时坐标的确定方法

    关于Python turtle库使用时坐标的确定方法 想画一个比较复杂的图像,而且还想用turtle画,最让人想退却的是无规律的笔势和繁多的坐标,但既然没有按奈住冲动的心,那我告诉你一个比较笨的方法吧 ...

  9. Python turtle库(螺旋正方形)

    利用python turtle库 画 螺旋正方形 螺旋正方形 import turtle #导入turtle库 turtle.pensize(2) #设置画笔的宽度(2) for i in range ...

最新文章

  1. Kubernetes 网络排错指南
  2. python非贪婪、多行匹配正则表达式例子[转载]
  3. 底板芯片组与内存映射(Motherboard Chipsets and the Memory Map) 【转】
  4. 第59件事 运营驱动产品调优案例
  5. 计算一个二进制数中数字“1”的个数(位运算)
  6. php分页怎么实行跳转,php分页函数,支持页码下拉选择跳转
  7. 修复QQ在网页上的快速登录
  8. java static final关键字_Java的static与final关键字
  9. 期刊计算机仿真地址在哪,计算机仿真杂志社地址
  10. oracle net conf启动无反应,weblogic突然无法启动,显示Server state changed to FORCE
  11. 【Python第三篇】Python装饰器、生成器、迭代器
  12. 组件 -- Alert
  13. 文件管理器之文件操作
  14. PHP(PHP:Hypertext Preprocessor)
  15. maven-下载源码与javadoc
  16. scratch积木编程-[微进阶]纯画笔时钟[单角色]
  17. java求1到20的阶乘
  18. kindle看pdf不清楚_无法在Kindle上阅读PDF格式的电子书,该怎么办呢?
  19. 小米游戏本bios_小米游戏本2019款,原来他才是电脑的终极境界
  20. drain open 线与_【转】open-drain与push-pull

热门文章

  1. 什么是docker,它与虚拟机有什么区别?
  2. 数学七大基本思想方法
  3. CENTOS5.5下使用Roundcube搭建 Webmail
  4. 安装CAJViewer时遇到注册模块出现1904错误解决方法
  5. SQL-聚合函数结果作为筛选条件时where与having用法的区别
  6. Java实现神经网络方法
  7. 文件或目录损坏其无法读取问题解决方法2022-9-15
  8. 如何添加打印纸规格尺寸?
  9. vue实现拖拽的组件
  10. uniapp 开发微信公众号H5 隐藏右上角扩展按钮