这段 Python 代码实现了一个简单的考试倒计时器,可以根据输入的考试时间进行倒计时。代码使用了 datetimetime 模块进行时间处理,并利用第三方库 keyboard 监听键盘输入,以便用户可以手动停止计时。

代码功能:

  • 接收用户输入的考试日期和时间,格式为 'YYYY-MM-DD HH:MM'。
  • 根据当前时间和考试时间计算剩余时间,以天、小时、分钟和秒的形式显示。
  • 监听键盘上的 'esc' 键,按下后停止计时。

需要注意的问题:

  1. 缺乏自动退出条件: 代码会一直运行直到考试时间到达或手动停止计时,没有设定自动退出条件。
  2. 没有错误处理: 没有对输入的考试日期和时间进行错误处理,如果输入格式不正确,程序会抛出异常。
  3. 考试时间应该在当前时间之后: 否则计时会立即结束。
  4. 依赖第三方库: 代码中使用了第三方库 keyboard 来监听键盘输入,需要确保已经安装该库。
  5. 响应键盘输入: 如果希望在计时过程中能够及时响应键盘输入,可以考虑使用多线程或多进程的方式。

建议:

  • 添加自动退出条件,例如在考试时间到达后自动退出程序。
  • 对用户输入的考试日期和时间进行错误处理,避免程序异常。
  • 确保考试时间在当前时间之后。
  • 使用多线程或多进程的方式,使程序能够及时响应键盘输入。
  • 在使用之前进行进一步的测试和完善。

代码示例:

import datetime
import time
import keyboard

def countdown_timer(exam_datetime):
    def stop_timer():
        print('计时已停止!')
        nonlocal stop_flag
        stop_flag = True

    keyboard.add_hotkey('esc', stop_timer)

    stop_flag = False
    while not stop_flag:
        current_time = datetime.datetime.now()
        if current_time >= exam_datetime:
            print('考试时间到!')
            break
        remaining_time = exam_datetime - current_time
        days, seconds = divmod(remaining_time.seconds, 86400)
        hours, seconds = divmod(seconds, 3600)
        minutes, seconds = divmod(seconds, 60)
        print(f'剩余时间:{days}天 {hours:02d}:{minutes:02d}:{seconds:02d}')
        time.sleep(1)

if __name__ == '__main__':
    exam_datetime_str = input('请输入考试日期和时间(格式:YYYY-MM-DD HH:MM):')
    exam_datetime = datetime.datetime.strptime(exam_datetime_str, '%Y-%m-%d %H:%M')
    print('距离考试倒计时开始!')
    countdown_timer(exam_datetime)
Python 倒计时器代码:功能与优化建议

原文地址: https://www.cveoy.top/t/topic/o2lm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录