猫史档案馆


【Python作品分享】学习计划三个月【作品秀】

用户:yilekeyileke查看:0 回复:1 评论:0 创建时间:2023-05-12T21:09:55


【作品展示】

center_image

 

【作品介绍】

学习计划,每日定时提醒

 

【作品源代码】

import datetime
import time
import schedule
import subprocess


def load_tasks():
    return [
        {'time': '08:35', 'task': '吃早餐', 'date': '2023-05-12'},
        {'time': '08:55', 'task': '读书(1小时)', 'date': '2023-05-12'},
        {'time': '10:10', 'task': '开始上班', 'date': '2023-05-12'},
        {'time': '15:50', 'task': '下班', 'date': '2023-05-12'},
        {'time': '19:30', 'task': '健身(1.5小时)', 'date': '2023-05-12'},
        {'time': '20:05', 'task': '吃晚饭', 'date': '2023-05-12'},
        {'time': '20:47', 'task': '学习Python(2小时)', 'date': '2023-05-12'},
        {'time': '20:49', 'task': '听BBC', 'date': '2023-05-13'},
    ]


class Reminder:
    def __init__(self, task_item):
        self.task_time = datetime.datetime.strptime(
            f'{task_item["date"]} {task_item["time"]}', '%Y-%m-%d %H:%M')
        self.task_desc = task_item['task']

    def is_expired(self):
        delta_seconds = (self.task_time - datetime.datetime.now()).seconds
        return delta_seconds < 0

    def create_job(self):
        delta_seconds = (self.task_time - datetime.datetime.now()).seconds
        if delta_seconds < 0:
            print(f'Task {self.task_desc} has expired.')
        else:
            schedule.every(delta_seconds).seconds.do(self.trigger)

    def trigger(self):
        print(f'Task {self.task_desc} time is up!')
        self.play_music()

    def play_music(self):
        command = ['afplay', '/System/Library/Sounds/Submarine.aiff']
        subprocess.Popen(command)


def run_tasks():
    task_list = load_tasks()
    tasks = [Reminder(item) for item in task_list]
    for task in tasks:
        task.create_job()

    while True:
        schedule.run_pending()
        time.sleep(1)


run_tasks()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
Metre-01Metre-01

好!

点赞0


评论