Python制作一系列倒计时器,倒计时结束播放音乐

这篇博客讲述了作者如何用Python解决连续多次倒计时的需求,通过创建一个计数文件实现计数,并结合pygame库播放音乐。代码中包含了对时间列表的处理,确保时间取整,以及倒计时结束后的音乐播放功能。主要难点在于计数文件的管理和时间的递减控制。运行效果是倒计时结束后播放音乐,直到手动停止。
摘要由CSDN通过智能技术生成

遇到的问题

我遇到的问题是需要进行一些列的倒计时。开始的时候是在手机的倒计时输入,一次倒计时结束再输入下一次倒计时,如此循环,但觉得麻烦,就动手自己写了代码。可以一次性输入所有时间,然后每次倒计时只需要点击一次运行就可以了,听到铃声点击停止,就停止播放音乐。

难点

听到提示音乐就会手动终止程序,每次程序都是没有自行运行完的,因而无法在同一个文件内实现计数的,因此使用了一个计数文件,num.txt,文件里面只有一个数字,为了计数编写了如下函数:

def add_one():
    # 每次执行程序,都让程序里面的参数加1
    f_out = open('num.txt', 'r+')
    a = f_out.read()
    a = int(a) + 1
    f_out.seek(0)
    f_out.truncate()
    f_out.write(str(a))
    f_out.close()
return a

需要注意的问题

因为我的时间列表有小数,需要对时间进行取整,否则时间递减到负数也不会播放音乐,将无限进行下去。

int(FileTime[i])

运行效果
运行后就开始倒计时,直到剩余时间为零,然后想起音乐,如图所示:
运行后的显示

需要用到的库

需要额外安装pygame。

对部分代码的解释

while True:
    pass

如果没有这行代码,程序播放瞬间就停止了,因此需要加这一行。

完整代码

import time  # 导入时间库
import os  # 导入系统库
import pygame

def add_one():
    # 每次执行程序,都让程序里面的参数加1
    f_out = open('num.txt', 'r+')
    a = f_out.read()
    a = int(a) + 1
    f_out.seek(0)
    f_out.truncate()
    f_out.write(str(a))
    f_out.close()
    return a

FileTime = [338.99, 319.66, 303.96, 117.75999999999999, 171.94, 281.42, 566.73, 88.87, 96.89, 259.06, 198.53, 235.68, 245.21, 154.49, 84.74, 204.54]
FileTime = FileTime
i = add_one()
i = int(i)
print("i is", i)

second = int(FileTime[i]) - 10


while second != 0:  # 除非分钟数和秒钟数同时为0,否则执行循环
    os.system('cls')  # 清空控制台
    print("%d" % second)  # 打印剩余时间到控制台
    second -= 1  # 秒数自减
    time.sleep(1)  # 程序延时一秒

pygame.mixer.init()
pygame.mixer.music.load('1.mp3')
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play()
while True:
    pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ampare1987

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值