python绘制圣诞树、烟花、爱心及节日倒计时
说明:
该博客主要完成以下几个方面的功能:
1.元旦节日倒计时代码的实现
2.使用python源码“绘制圣诞树”
3.使用python绘制“跨年烟花”
4.使用python 绘制“爱心”
呈现方式:代码和截图
1.元旦倒计时代码:
输入相应的节日时间,可以计算任何节日的倒计时。
# -*- coding='utf-8' -*-
'''
功能:基于python的元旦倒计时代码
作者:Pegasus
时间:2022/12/09
'''
# 导入所需要的功能模块
import datetime
import sys
import math
import time
# 定义新的一年日期
spring = datetime.datetime(2023, 1, 1, 0, 0, 0) # 新的一年的日期def caldays():while True:# 获取当前的日期today = datetime.datetime.now()# 新年日期减去当前日期 day = (spring - today).days # 得到秒数second = (spring - today).seconds # 计算秒sec = second % 60# 计算分minute = second / 60 % 60# 计算小时hour = second / 60 / 60# 计算天数if hour > 24:hour = hour - 24hour = math.floor(hour) # 去掉小数点,向下取整minute = math.floor(minute) # 去掉小数点,向下取整# 输出结果sys.stdout.write("离2023年元旦还有" + str(day) + "天" + str(hour) + "小时" + str(minute) + "分钟" + str(sec) + "秒" + '\r')sys.stdout.flush()time.sleep(1)print("离2023年元旦还有" + str(day) + "天" + str(hour) + "小时" + str(minute) + "分钟" + str(sec) + "秒" + '\r')if __name__ == '__main__':caldays()
结果展示:
2.绘制圣诞树代码:
主要使用turtle库,绘制彩色圣诞树。
# -*- coding='utf-8' -*-
'''
功能:基于python的圣诞树绘制
作者:Pegasus
时间:2022/12/09
'''#导入turtle库import turtle#设置屏幕大小screen = turtle.Screen()screen.setup(800,600)#获取画笔并设置一些属性:圆形、红色、快circle = turtle.Turtle()circle.shape('circle')circle.color('red')circle.speed('fastest')#抬起画笔circle.up()#重新获取画笔square = turtle.Turtle()#重新设置画笔属性:四方形、绿色、快square.shape('square')square.color('green')square.speed('fastest')#重新抬起画笔square.up()#跳到指定坐标位置circle.goto(0,280)#复制当前图形circle.stamp()k = 0for i in range(1, 17):y = 30*ifor j in range(i-k):x = 30*jsquare.goto(x,-y+280)square.stamp()square.goto(-x,-y+280)square.stamp()if i % 4 == 0:x = 30*(j+1)circle.color('red')circle.goto(-x,-y+280)circle.stamp()circle.goto(x,-y+280)circle.stamp()k += 2if i % 4 == 3:x = 30*(j+1)circle.color('yellow')circle.goto(-x,-y+280)circle.stamp()circle.goto(x,-y+280)circle.stamp()square.color('brown')for i in range(17,20):y = 30*ifor j in range(3):x = 30*jsquare.goto(x,-y+280)square.stamp()square.goto(-x,-y+280)square.stamp()turtle.exitonclick()
结果:
3.跨年烟花代码:
主要使用tkinter绘制界面,使用多线程开启烟花画面,绘制结果为动图。
# -*- coding: utf-8 -*-import math, random,time
import threading
import tkinter as tk
import re
#import uuidFireworks=[]
maxFireworks=8
height,width=600,600class firework(object):def __init__(self,color,speed,width,height):#uid=uuid.uuid1()self.radius=random.randint(2,4) #粒子半径为2~4像素self.color=color #粒子颜色self.speed=speed #speed是1.5-3.5秒self.status=0 #在烟花未爆炸的情况下,status=0;爆炸后,status>=1;当status>100时,烟花的生命期终止self.nParticle=random.randint(20,30) #粒子数量self.center=[random.randint(0,width-1),random.randint(0,height-1)] #烟花随机中心坐标self.oneParticle=[] #原始粒子坐标(100%状态时)self.rotTheta=random.uniform(0,2*math.pi) #椭圆平面旋转角#椭圆参数方程:x=a*cos(theta),y=b*sin(theta)#ellipsePara=[a,b]self.ellipsePara=[random.randint(30,40),random.randint(20,30)] theta=2*math.pi/self.nParticlefor i in range(self.nParticle):t=random.uniform(-1.0/16,1.0/16) #产生一个 [-1/16,1/16) 的随机数x,y=self.ellipsePara[0]*math.cos(theta*i+t), self.ellipsePara[1]*math.sin(theta*i+t) #椭圆参数方程xx,yy=x*math.cos(self.rotTheta)-y*math.sin(self.rotTheta), y*math.cos(self.rotTheta)+x*math.sin(self.rotTheta) #平面旋转方程self.oneParticle.append([xx,yy])self.curParticle=self.oneParticle[0:] #当前粒子坐标self.thread=threading.Thread(target=self.extend) #建立线程对象def extend(self): #粒子群状态变化函数线程for i in range(100):self.status+=1 #更新状态标识self.curParticle=[[one[0]*self.status/100, one[1]*self.status/100] for one in self.oneParticle] #更新粒子群坐标time.sleep(self.speed/50)def explode(self):self.thread.setDaemon(True) #把现程设为守护线程self.thread.start() #启动线程def __repr__(self):return ('color:{color}\n' 'speed:{speed}\n''number of particle: {np}\n''center:[{cx} , {cy}]\n''ellipse:a={ea} , b={eb}\n''particle:\n{p}\n').format(color=self.color,speed=self.speed,np=self.nParticle,cx=self.center[0],cy=self.center[1],p=str(self.oneParticle),ea=self.ellipsePara[0],eb=self.ellipsePara[1])def colorChange(fire):rgb=re.findall(r'(.{2})',fire.color[1:])cs=fire.statusf=lambda x,c: hex(int(int(x,16)*(100-c)/30))[2:] #当粒子寿命到70%时,颜色开始线性衰减if cs>70:ccr,ccg,ccb=f(rgb[0],cs),f(rgb[1],cs),f(rgb[2],cs)else:ccr,ccg,ccb=rgb[0],rgb[1],rgb[2]return '#{0:0>2}{1:0>2}{2:0>2}'.format(ccr,ccg,ccb)def appendFirework(n=1): #递归生成烟花对象if n>maxFireworks or len(Fireworks)>maxFireworks:passelif n==1:cl='#{0:0>6}'.format(hex(int(random.randint(0,16777215)))[2:]) # 产生一个0~16777215(0xFFFFFF)的随机数,作为随机颜色a=firework(cl,random.uniform(1.5,3.5),width,height)Fireworks.append( {'particle':a,'points':[]} ) #建立粒子显示列表,‘particle’为一个烟花对象,‘points’为每一个粒子显示时的对象变量集a.explode()else:appendFirework()appendFirework(n-1)def show(c):for p in Fireworks: #每次刷新显示,先把已有的所以粒子全部删除for pp in p['points']:c.delete(pp)for p in Fireworks: #根据每个烟花对象,计算其中每个粒子的显示对象oneP=p['particle']if oneP.status==100: #状态标识为100,说明烟花寿命结束Fireworks.remove(p) #移出当前烟花appendFirework() #新增一个烟花continueelse:li=[[int(cp[0]*2)+oneP.center[0],int(cp[1]*2)+oneP.center[1]] for cp in oneP.curParticle] #把中心为原点的椭圆平移到随机圆心坐标上color=colorChange(oneP) #根据烟花当前状态计算当前颜色for pp in li:p['points'].append(c.create_oval(pp[0]-oneP.radius, pp[1]-oneP.radius, pp[0]+oneP.radius, pp[1]+oneP.radius, fill=color)) #绘制烟花每个粒子root.after(50, show,c) #回调,每50ms刷新一次if __name__=='__main__':appendFirework(maxFireworks)root = tk.Tk()cv = tk.Canvas(root, height=height, width=width)cv.create_rectangle(0, 0, width, height, fill="black")cv.pack()root.after(50, show,cv)root.mainloop()
结果:
4.绘制爱心代码
主要是使用turtle库绘制。
# -*- coding='utf-8' -*-
'''
功能:基于python的爱心绘制
作者:Pegasus
时间:2022/12/11
'''import turtle
import time
def LittleHeart():for i in range(200):turtle.right(1)turtle.forward(2)# love = input('请输入表白语句,然后回车,默认为"I Love You":\n')
# me = input('请输入要表白的人:\n')
# if love=='':
# # 如果未输入表白语句,则使用默认语句
# love='I Love you'love='I Love you'
me = '年轻人,就要浪漫点。'turtle.setup(width=900,height=600) # 爱心的画布的大小
turtle.color('red','red') # 爱心的颜色及外边笔的颜色
turtle.pensize(5) # 画笔的粗细
turtle.speed(1000000) # 绘制速度turtle.up() # 画笔向上turtle.hideturtle()
turtle.goto(0,-180)
turtle.showturtle()
turtle.down()
turtle.speed(5)
turtle.begin_fill()# 开始填充
turtle.left(140)
turtle.forward(224)
LittleHeart()
turtle.left(120)
LittleHeart()
turtle.forward(224)
turtle.end_fill()
turtle.pensize(5)
turtle.up()
turtle.hideturtle()
turtle.goto(0,0)
turtle.showturtle()
turtle.color('#CD5C5C','pink')
turtle.write(love,font=('gungsuh',30,),align="center")
turtle.up()
turtle.hideturtle()if me !='':turtle.color('black', 'pink')time.sleep(2)turtle.goto(180,-180)turtle.showturtle()turtle.write(me, font=(20,), align="center", move=True)window=turtle.Screen()window.exitonclick()
结果:
代码下载链接:
https://download.csdn.net/download/mzl_18353516147/87290601
python绘制圣诞树、烟花、爱心及节日倒计时相关推荐
- 如何用Python绘制圣诞树(极其鬼畜视频) - B站小视频
如何用Python绘制圣诞树(极其鬼畜视频)
- Python绘制圣诞树
python绘制圣诞树终章 一位朋友送给相爱18年的闺蜜的圣诞树,是定制款呐 # 袜子 seth(-20) pensize(2) penup() goto(-30, 130) pencolor(&qu ...
- 【turtle库】Python绘制圣诞树
写在前面: 1.圣诞节快到了,赶紧画个圣诞树给喜欢的人吧! 2.本文仅供学习用,如果代码写的有不好的地方,希望大佬指导改正. 3.代码在下面,需要自取,会附带一部分代码解释,简单易懂,欢迎各位按照自己 ...
- 分享10个Python绘制圣诞树的源码,拿来即用
大家好,我是丁小杰. 圣诞节就要到了,作为一个的"程序猿",怎么能够少得了绘制圣诞树呢,今天就和大家分享 10 个圣诞树的绘制源码,拿来即用! 搞笑版 height = 5 sta ...
- 使用Python绘制圣诞树教程(附源代码)
- 用python画圣诞树-使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...
- 圣诞节到了,教大家用 Python 绘制几棵圣诞树~
大家好,我是大飞 今天是圣诞节,先在这里祝大家圣诞节快乐~~,用英语来表达就是 Merry Christmas ~~, 为了贴合这个氛围,今天分享五种用 Python 绘制圣诞树的方法,从基础到高级, ...
- 圣诞节要来了,程序员女友用Python画圣诞树的浪漫代码作为最好的礼物
我从来没有过过一个真正意义上的圣诞节. 没有拥有过圣诞树, 没有和恋人一起看过雪,也没有收过精心准备的圣诞礼物. 我给自己安排很多与节日无关的事来度过那一天. 尽管如此,我还是很期待圣诞节. 哈哈哈哈 ...
- 用Python画圣诞树
Python绘制圣诞树 拿去给自己所思所念之人 from turtle import * import timesetup(500, 500, startx=None, starty=None) sp ...
最新文章
- 面向过程(结构化)分析方法与面向对象分析方法的区别
- 小黑盒不显示服务器,steam上买的游戏小黑盒不显示 | 手游网游页游攻略大全
- 什么样的GPS定位系统最适合做二次开发
- Spring Ioc注解式开发中注解的作用
- 笔记:C++重载++前后区分
- MS SQL自定义函数IsPositiveInteger MS SQL自定义函数IsNumeric 水晶报表使用IEnumerableT数据源...
- 尚硅谷_JS DOM编程_学习笔记
- python冒泡算法_python_冒泡算法
- (二十五)【NIPS 2017】Prototypical Networks for Few-shot Learning
- 【CSS3】CSS3文本相关属性大全
- SetInterval(循环计时器)
- CROC-MBTU 2012, Elimination Round (ACM-ICPC) H DP题目
- 报名国电没有计算机二级,想进入国电,捧起“铁饭碗”?没问题,这几个专业助你成功...
- 使用datagrid时json的格式
- CTA策略:主力连续、全合约模式下回测结果的差异探讨
- 小米平板4(Plus) LTE 版本,开通话模式教程(MIUI)
- [编程题]山寨金闪闪 (面试题)
- 攻防世界Web新手区题解
- 洛谷P1757 通天之分组背包
- 2013年互联网江湖格局观