专业编程基础技术教程

网站首页 > 基础教程 正文

学姐教你:用Python设计生日提醒小助手,永远不会忘记重要日子啦

ccvgpt 2025-01-05 16:05:59 基础教程 2 ℃

学姐教你:用Python设计一个贴心的生日提醒小助手,永远不会忘记重要的日子啦~

亲爱的小伙伴们,今天学姐要跟大家分享一个超实用的Python小项目哦!作为一个经常忘记重要日子的迷糊鬼,我特地写了一个生日提醒小助手,再也不用担心错过亲朋好友的生日啦!这个项目会用到文件操作、日期处理和基本的函数编写,超级适合Python初学者练手呢~

1. 项目准备工作

首先我们需要安装一个处理日期的模块datetime,不过这个是Python内置的呢,不用额外安装啦!我们还要准备一个存储生日信息的文本文件,就叫birthdays.txt吧~

学姐教你:用Python设计生日提醒小助手,永远不会忘记重要日子啦


from datetime import datetime, timedelta

import os



# 检查文件是否存在,不存在就创建一个空文件

if not os.path.exists('birthdays.txt'):

    open('birthdays.txt', 'w').close()

2. 添加生日信息

首先我们来写一个添加生日信息的函数,可以把好友的名字和生日记录下来呢~


def add_birthday():

    name = input('请输入好友的名字:')

    while True:

        try:

            date_str = input('请输入生日(格式:YYYY-MM-DD):')

            # 验证日期格式是否正确

            birthday = datetime.strptime(date_str, '%Y-%m-%d')

            break

        except ValueError:

            print('哎呀,日期格式不对呢,请用YYYY-MM-DD格式重新输入啦~')

    

    with open('birthdays.txt', 'a', encoding='utf-8') as f:

        f.write(f'{name},{date_str}\n')

    print(f'已经记下{name}的生日啦!')

小贴士:这里用了try-except来处理日期格式错误,这样程序就不会因为用户输入错误的日期而崩溃啦!

3. 检查最近的生日

接下来写一个查看最近生日的功能,这个可以帮我们提前做准备呢!


def check_upcoming_birthdays(days=30):

    today = datetime.now()

    upcoming = []

    

    with open('birthdays.txt', 'r', encoding='utf-8') as f:

        for line in f:

            name, date_str = line.strip().split(',')

            birthday = datetime.strptime(date_str, '%Y-%m-%d')

            

            # 计算今年的生日日期

            this_year_birthday = birthday.replace(year=today.year)

            if this_year_birthday < today:

                this_year_birthday = birthday.replace(year=today.year + 1)

            

            days_until = (this_year_birthday - today).days

            

            if 0 <= days_until <= days:

                upcoming.append((name, this_year_birthday.strftime('%Y-%m-%d'), days_until))

    

    return sorted(upcoming, key=lambda x: x[2])

4. 制作一个简单的交互界面

来做一个可爱的菜单,方便大家使用这个小助手呢~


def main():

    while True:

        print('\n? 欢迎使用生日提醒小助手 ?')

        print('1. 添加新的生日信息')

        print('2. 查看最近的生日')

        print('3. 退出程序')

        

        choice = input('请选择功能(输入数字1-3):')

        

        if choice == '1':

            add_birthday()

        elif choice == '2':

            upcoming = check_upcoming_birthdays()

            if not upcoming:

                print('最近30天内没有好友过生日呢~')

            else:

                print('\n最近30天要过生日的小伙伴:')

                for name, date, days in upcoming:

                    print(f'→ {name}的生日是{date},还有{days}天就到啦!')

        elif choice == '3':

            print('下次见啦!记得常来看看哦~')

            break

        else:

            print('输入有误啦,请重新选择~')

5. 运行我们的小助手

最后,只需要调用主函数就可以啦!


if __name__ == '__main__':

    main()

注意事项:

  1. 记得把生日信息文件birthdays.txt保存在程序同一目录下哦~
  2. 日期格式一定要按照YYYY-MM-DD来输入,比如2024-12-25这样子~
  3. 如果想修改提醒的天数范围,可以在调用check_upcoming_birthdays()时传入不同的天数参数呢!

学习小建议:

  • 试试给程序添加删除生日信息的功能?
  • 可以尝试把生日信息保存成JSON格式,会更方便处理呢~
  • 想要更贴心的话,还可以加入发送邮件提醒的功能哦!

小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问我哦。祝大家学习愉快,Python学习节节高!

最近发表
标签列表