python背景怎么自定义铃声_Python 上课铃声的定时播放(具有较强的自我管理意识.jpg)...
为了在家安心学习,我决定写一段代码播放上课的铃声。
之前中学时就希望有一个这样的软件,周末就可以高效学习了。
但是网上搜不到相关软件,当时也不会写代码,就用闹钟来代替了。
现在自己写一个试试。
原本我是用C++写的,但后来发现C++太麻烦了。
要用到其他的库,那些库也不好安装,总是有一大堆难以解决的报错,就换Python了。
没想到Python这么方便。
功能一、播放音频
安装playsound库即可运行
from playsound import playsound
playsound('1.wav')
功能二、获取系统时间
import time
def main():
print(time.localtime())
year = time.localtime().tm_year
month = time.localtime().tm_mon
day = time.localtime().tm_mday
hour = time.localtime().tm_hour
minute = time.localtime().tm_min
second = time.localtime().tm_sec
print(year, '年', month, '月', day, '日')
print(hour, '时', minute, '分', second, '秒')
main()
功能三、上课铃声的定时播放
from playsound import playsound
import time
def ring():
playsound('1.wav')
time.sleep(5)
playsound('1.wav')
time.sleep(60)
def timeoff(hour,minute):
if hour == time.localtime().tm_hour and minute == time.localtime().tm_min:
ring()
while 1:
timeoff(8,0)
timeoff(8,45)
timeoff(8,50)
timeoff(9,35)
timeoff(9,50)
timeoff(10,35)
timeoff(10,40)
timeoff(11,25)
timeoff(11,30)
timeoff(12,15)
timeoff(13,30)
timeoff(14,15)
timeoff(14,20)
timeoff(15,20)
timeoff(16,5)
timeoff(16,10)
timeoff(16,55)
timeoff(18,30)
timeoff(19,15)
timeoff(19,20)
timeoff(20,5)
timeoff(20,10)
timeoff(20,55)
注释:
原本连续循环播放一分钟,效果不理想,利用了sleep语句使代码休眠,可以巧妙地解决这个问题
但是仍然存在CPU占用率过高的问题
上课时间表
编译
编译后再使用,就很方便了
优化一 针对CPU占用率过高的优化
原代码用了一个while(1)的循环
每一帧都在刷新比对系统时间,这使得CPU占用率过高
要求精确到分钟,那么现在我们每60秒检查一次时间,就可大大降低CPU占用率
from playsound import playsound
import time
import sys
#上课状态
status=0
def ring():
global status
status=status+1
if status%2==0:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:下课")
else:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:上课")
playsound('1.wav')
time.sleep(5)
playsound('1.wav')
def timeoff(hour,minute):
if hour == time.localtime().tm_hour and minute == time.localtime().tm_min:
ring()
def timecheck():
if time.localtime().tm_hour>=8 and time.localtime().tm_hour<=21:
timeoff(8,0)
timeoff(8,45)
timeoff(8,50)
timeoff(9,35)
timeoff(9,50)
timeoff(10,35)
timeoff(10,40)
timeoff(11,25)
timeoff(11,30)
timeoff(12,15)
timeoff(13,30)
timeoff(14,15)
timeoff(14,20)
timeoff(15,20)
timeoff(16,5)
timeoff(16,10)
timeoff(16,55)
timeoff(18,30)
timeoff(19,15)
timeoff(19,20)
timeoff(20,5)
timeoff(20,55)
else:
sys.exit()
while 1:
timecheck()
time.sleep(60)#每60秒检查一次
优化二 改变时间表的数据类型
使用字典、元组存储打铃时间和上下课状态
使代码更符合使用逻辑、运行时的漏洞更少
动态注释版本
了解程序实时的运行过程
from playsound import playsound
import time
def ring():
#一次打铃,重复播放两次,中间间隔5秒
playsound('1.wav')
time.sleep(5)
playsound('1.wav')
def itemcheck(yz,sta):
print("该item的键是:",yz,"(一个元组)")
print("元组小时部分:",yz[0],",分钟部分:",yz[1])
if yz[0] == time.localtime().tm_hour and yz[1] == time.localtime().tm_min:
ring()
if sta==0:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:下课")
#休眠5分钟
print("休眠5分钟")
time.sleep(240)
else:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:上课")
#休眠45分钟
print("休眠45分钟")
time.sleep(2640)
def timecheck():
#建立一个字典存放打铃时间和对应的状态
dict1 = {(8,0):1,(8,45):0,(8,50):1,(9,35):0,
(9,50):1,(10,35):0,(10,40):1,(11,25):0,
(11,30):1,(12,15):0,(13,30):1,(14,15):0,
(14,20):1,(15,5):0,(15,20):0,(16,5):0,
(16,10):1,(16,55):0,(18,30):1,(19,15):0,
(19,20):1,(20,5):0,(20,10):1,(20,55):0}
print("打铃时间表:",dict1)
print("正在遍历时间表里的全部item:")
for k in dict1.keys() :
#k是字典的键,dict1[k]是它对应的值
print("这个键是",k ,"它的值是",dict1[k])
itemcheck(k,dict1[k])
while 1:
timecheck()
time.sleep(60)#每60秒检查一次
纯净版本
from playsound import playsound
import time
def ring():
#一次打铃,重复播放两次,中间间隔5秒
playsound('1.wav')
time.sleep(5)
playsound('1.wav')
def itemcheck(yz,sta):
if yz[0] == time.localtime().tm_hour and yz[1] == time.localtime().tm_min:
if sta==0:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:下课")
else:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:上课")
ring()
if sta==0:
#休眠5分钟
time.sleep(240)
else:
#休眠45分钟
time.sleep(2640)
def timecheck():
#建立一个字典存放打铃时间和对应的状态
dict1 = {(8,0):1,(8,45):0,(8,50):1,(9,35):0,
(9,50):1,(10,35):0,(10,40):1,(11,25):0,
(11,30):1,(12,15):0,(13,30):1,(14,15):0,
(14,20):1,(15,5):0,(15,20):0,(16,5):0,
(16,10):1,(16,55):0,(18,30):1,(19,15):0,
(19,20):1,(20,5):0,(20,10):1,(20,55):0}
for k in dict1.keys() :
#k是字典的键,dict1[k]是它对应的值
itemcheck(k,dict1[k])
while 1:
timecheck()
time.sleep(30)#每30秒检查一次
优化三、睡眠时间自适应
from playsound import playsound
import time
breakflag=0
def ring():
#一次打铃,重复播放两次,中间间隔5秒
playsound('1.wav')
time.sleep(5)
playsound('1.wav')
def itemcheck(yz,sta):
if yz[0] == time.localtime().tm_hour and yz[1] == time.localtime().tm_min:
if sta==0:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:下课")
else:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:上课")
ring()
elif yz[0] > time.localtime().tm_hour or ( yz[0] == time.localtime().tm_hour and yz[1] > time.localtime().tm_min ):
gaptime=(yz[0]-time.localtime().tm_hour-1)*60+yz[1]+(60-time.localtime().tm_min)
print("距离",yz[0],":",yz[1],"的打铃还有",gaptime,"分钟")
global breakflag
breakflag=1
print("休眠",gaptime-1,"分钟")
time.sleep(gaptime*60-60)
def timecheck():
#建立一个字典存放打铃时间和对应的状态
dict1 = {(8,0):1,(8,45):0,(8,50):1,(9,35):0,
(9,50):1,(10,35):0,(10,40):1,(11,25):0,
(11,30):1,(12,15):0,(13,30):1,(14,15):0,
(14,20):1,(15,5):0,(15,20):0,(16,5):0,
(16,10):1,(16,55):0,(18,30):1,(19,15):0,
(19,20):1,(20,5):0,(20,10):1,(20,55):0}
global breakflag
breakflag=0
for k in dict1.keys() :
#k是字典的键,dict1[k]是它对应的值
if breakflag ==0:
itemcheck(k,dict1[k])
else :
break
while 1:
timecheck()
time.sleep(5)#倒计时1分钟时,每5秒检查一次
效果
打开软件时,自适应休眠
倒计时一分钟时,休眠结束,每5秒刷新一次
时间到了,打铃
打铃结束,进入休眠
优化四 加入铃声状态的判断
from playsound import playsound
import time
breakflag=0
def ring():
#一次打铃,重复播放两次,中间间隔5秒
playsound('1.wav')
time.sleep(5)
playsound('1.wav')
def itemcheck(yz,sta):
if yz[0] == time.localtime().tm_hour and yz[1] == time.localtime().tm_min:
if sta==0:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:下课")
else:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:上课")
ring()
elif yz[0] > time.localtime().tm_hour or ( yz[0] == time.localtime().tm_hour and yz[1] > time.localtime().tm_min ):
gaptime=(yz[0]-time.localtime().tm_hour-1)*60+yz[1]+(60-time.localtime().tm_min)
if sta==0:
st="下课铃"
else:
st="上课铃"
print("距离",yz[0],":",yz[1],"的",st,"还有",gaptime,"分钟")
global breakflag
breakflag=1
print("休眠",gaptime-1,"分钟")
time.sleep(gaptime*60-60)
def timecheck():
#建立一个字典存放打铃时间和对应的状态
dict1 = {(8,0):1,(8,45):0,(8,50):1,(9,35):0,
(9,50):1,(10,35):0,(10,40):1,(11,25):0,
(11,30):1,(12,15):0,(13,30):1,(14,15):0,
(14,20):1,(15,5):0,(15,20):0,(16,5):0,
(16,10):1,(16,55):0,(18,30):1,(19,15):0,
(19,20):1,(20,5):0,(20,10):1,(20,55):0}
global breakflag
breakflag=0
for k in dict1.keys() :
#k是字典的键,dict1[k]是它对应的值
if breakflag ==0:
itemcheck(k,dict1[k])
else :
break
while 1:
timecheck()
time.sleep(5)#倒计时1分钟时,每5秒检查一次
优化五 加入倒计时功能
from playsound import playsound
import time
breakflag=0
def ring():
#一次打铃,重复播放两次,中间间隔5秒
playsound('1.wav')
time.sleep(5)
playsound('1.wav')
def itemcheck(yz,sta):
if yz[0] == time.localtime().tm_hour and yz[1] == time.localtime().tm_min:
if sta==0:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:下课")
else:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:上课")
ring()
elif yz[0] > time.localtime().tm_hour or ( yz[0] == time.localtime().tm_hour and yz[1]>time.localtime().tm_min):
gaptime=(yz[0]-time.localtime().tm_hour-1)*60+yz[1]+(60-time.localtime().tm_min)
if sta==0:
st="下课铃"
else:
st="上课铃"
global breakflag
breakflag=1
if gaptime-1>0 :
print("距离",yz[0],":",yz[1],"的",st,"还有",gaptime,"分钟")
print("(程序休眠",gaptime-1,"分钟)")
time.sleep(gaptime*60-60)
else:
print("倒计时",60-time.localtime().tm_sec,"秒")
def timecheck():
#建立一个字典存放打铃时间和对应的状态
dict1 = {(8,0):1,(8,45):0,(8,50):1,(9,35):0,
(9,50):1,(10,35):0,(10,40):1,(11,25):0,
(11,30):1,(12,15):0,(13,30):1,(14,15):0,
(14,20):1,(15,5):0,(15,20):0,(16,5):0,
(16,10):1,(16,55):0,(18,30):1,(19,15):0,
(19,20):1,(20,5):0,(20,10):1,(20,55):0}
global breakflag
breakflag=0
for k in dict1.keys() :
#k是字典的键,dict1[k]是它对应的值
if breakflag ==0:
itemcheck(k,dict1[k])
else :
break
while 1:
#print(time.localtime().tm_hour,"时",time.localtime().tm_min,"分",time.localtime().tm_sec,"秒")
timecheck()
time.sleep(1)#倒计时1分钟时,每1秒检查一次
优化六 定时退出
from playsound import playsound
import time
import sys
breakflag=0
def ring():
#一次打铃,重复播放两次,中间间隔15秒
playsound('1.wav')
time.sleep(15)
playsound('1.wav')
def itemcheck(yz,sta):
if yz[0] == time.localtime().tm_hour and yz[1] == time.localtime().tm_min:
if sta==0:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:下课")
else:
print("当前时间:",time.localtime().tm_hour,"时",time.localtime().tm_min,"分,","状态:上课")
ring()
elif yz[0] > time.localtime().tm_hour or ( yz[0] == time.localtime().tm_hour and yz[1]>time.localtime().tm_min):
gaptime=(yz[0]-time.localtime().tm_hour-1)*60+yz[1]+(60-time.localtime().tm_min)
if sta==0:
st="下课铃"
else:
st="上课铃"
global breakflag
breakflag=1
if gaptime-1>0 :
print("距离",yz[0],":",yz[1],"的",st,"还有",gaptime,"分钟")
print("(程序休眠",gaptime-1,"分钟)")
time.sleep(gaptime*60-60)
else:
print("倒计时",60-time.localtime().tm_sec,"秒")
elif time.localtime().tm_hour >=23 and time.localtime().tm_min >= 30 and time.localtime().tm_sec > 20:
#定时退出(23:30:20)
sys.exit()
def timecheck():
#建立一个字典存放打铃时间和对应的状态
dict1 = {(8,0):1,(8,45):0,(8,50):1,(9,35):0,
(9,50):1,(10,35):0,(10,40):1,(11,25):0,
(11,30):1,(12,15):0,(13,30):1,(14,15):0,
(14,20):1,(15,5):0,(15,20):1,(16,5):0,
(16,10):1,(16,55):0,(18,30):1,(19,15):0,
(19,20):1,(20,5):0,(20,10):1,(20,55):0,
(21,30):0,(22,00):0,(23,00):0,(23,30):0}
global breakflag
breakflag=0
for k in dict1.keys() :
#k是字典的键,dict1[k]是它对应的值
if breakflag ==0:
itemcheck(k,dict1[k])
else :
break
playsound('1.wav')
time.sleep(15)
playsound('1.wav')
while 1:
timecheck()
time.sleep(1)#倒计时1分钟时,每1秒检查一次
编译
记得调整电脑休眠时间
>>铃声下载地址
python背景怎么自定义铃声_Python 上课铃声的定时播放(具有较强的自我管理意识.jpg)...相关推荐
- python背景怎么自定义铃声_Python 上课铃声的定时播放(具有较强的自我管理能力.jpg)...
为了在家安心学习,我决定写一段代码播放上课的铃声. 之前中学时就希望有一个这样的软件,周末就可以高效学习了. 但是网上搜不到相关软件,当时也不会写代码,就用闹钟来代替了. 现在自己写一个试试. 原本我 ...
- python背景怎么自定义铃声_python爬取手机铃声
相信每个人都会给自己的手机调一个好听的音乐作为铃声,但是对于iphone用户来说换铃声一般都会去找第三方平台来进行更换,众多平台当中不得不说的就是爱思手机助手,今天我将带你通过python爬虫来批量进 ...
- python背景怎么自定义铃声_Python 制作音乐高潮副歌提取器
有些时候,我们为了设定手机铃声或者发抖音视频时,会耗费大量时间在音乐剪辑上.尤其是想发布大量抖音视频的时候,我们得收集大量的短音乐,这是一个相当耗费时间的工作.那么,这个音乐高潮的提取能不能自动化呢? ...
- python背景怎么自定义铃声_用python来教你做个音乐高潮提取器
有些时候,我们为了设定手机铃声或者发抖音视频时,会耗费大量时间在音乐剪辑上.尤其是想发布大量抖音视频的时候,我们得收集大量的短音乐,这是一个相当耗费时间的工作.那么,这个音乐高潮的提取能不能自动化呢? ...
- python动态调用自定义模块_python importlib动态导入模块 reload重载模块
阅读目录 一般而言,当我们需要某些功能的模块时(无论是内置模块或自定义功能的模块),可以通过import module 或者 from * import module的方式导入,这属于静态导入,很容易 ...
- python两个自定义函数_Python自定义函数实现求两个数最大公约数、最小公倍数示例...
本文实例讲述了Python自定义函数实现求两个数最大公约数.最小公倍数.分享给大家供大家参考,具体如下: 1. 求最小公倍数的算法: 最小公倍数 = 两个整数的乘积 / 最大公约数 所以我们首先 ...
- python中如何自定义函数_Python中自定义函数的教程
在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义一个求绝对值的my_abs函数 ...
- python中func自定义函数_Python函数之自定义函数作用域闭包
一 前言 1.1 为什么要用函数 代码的组织结构更清晰,可读性好: 遇到重复的功能不需要重新编写代码,调用函数即可,代码不会冗余: 功能需要扩展时,只需要修改函数内容即可,实现统一管理,降低代码维护难 ...
- python背景颜色词云图_python中实现词云图
import matplotlib.pyplot as plt import jieba from wordcloud import wordcloud # 1.读出词语 text = open('t ...
- python如何定义自定义函数_python类中系统自定义函数
标签: python类 双下划线特殊函数 今天遇到python类内部系统以双下划线开头和结尾的情况,特去学习一部分的应用情况,顺便记录一下.python 的OOP编程中,每个类拥有一些系统特殊定义的函 ...
最新文章
- 打造专属BGM,​Python 深度学习教你
- 微信开发接口调用(前端+.net服务端)
- 基于SSM的勤工助学管理系统
- linux 文本中的不可见字符和处理
- 使用mybatis的resultMap进行复杂查询
- iOS UITextField限制输入字数
- 如何检查Xcode是否被植入了XcodeGhost
- 20科大考研经验分享-数学
- Javaweb图书管理系统的设计与实现(含毕业设计)
- Monkey test 汇总
- 为什么学习线性代数?
- 海洋技术课设遥感反演matlab,国家重点研发计划项目“新型海洋微波遥感探测机理模型与应用研究” 课题一“微波极化遥感机理与应用技术”学术研讨会顺利召开...
- PHP实现一个在线选择答题系统
- 零基础入门python好学么
- ZipFile 解压多个.zip压缩文件
- 关于系统时钟的配置问题,如是stm32f1的系统时钟为72Mhz
- 从0制作一个多线程游戏实录
- Java基于jsp的火车票网上订票系统
- 泰凌微 Telink TLSR825X Printf gpio 模拟 串口 打印信息 log
- 免费计算机操作基础知识ppt,计算机基础知识与基本操作要点课件.ppt
热门文章
- 中科大开源数据集CCPD 2019详细介绍
- 输出流缓冲的意义 何时缓冲 Stdout Buffering
- java工程师项目简历_java软件工程师岗位项目经历怎么写
- 五、Matlab 画图——万能的plot函数
- oracle官网下载plsql,Oracle、OracleClient、PLSQL下载安装配置(64位)
- MATLAB印刷体汉字识别
- Unity 脚本生成瓦片地图TileMap
- 什么是A*(Astar)算法?(简单叙述)
- 计算机主机前声音口怎么设置吗,电脑耳机没声音怎么设置_耳机没声音怎么设置-太平洋IT百科手机版...
- 自动阅读脚本成本分析大全(单月阅读成本核对)