日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python背景怎么自定义铃声_Python 上课铃声的定时播放(具有较强的自我管理意识.jpg)...

發布時間:2023/12/14 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。