一、基础代码实现
日期处理模块
使用Python内置的`datetime`模块获取当前日期,并与存储的生日进行比较,判断是否为生日当天。
年龄计算功能
通过当前日期与出生日期计算年龄,并计算距离下次生日的天数。
图形界面展示
使用`turtle`库绘制生日祝福图案(如彩带、气球等)。
二、完整代码示例
```python
import datetime
import turtle
存储生日信息
birthdays = {
"Alice": datetime.date(1990, 5, 15),
"Bob": datetime.date(1995, 12, 20),
"Charlie": datetime.date(2000, 7, 10)
}
def calculate_age(birthday):
today = datetime.date.today()
age = today.year - birthday.year - ((today.month, today.day) < (birthday.month, birthday.day))
计算距离下次生日的天数
next_birthday = datetime.date(today.year, birthday.month, birthday.day)
if today > next_birthday:
next_birthday = datetime.date(today.year + 1, birthday.month, birthday.day)
delta = (next_birthday - today).days
return age, delta
def birthday_wish(name, age, days_until_next_birthday):
print(f"亲爱的 {name}, 祝你{age}岁生日快乐!")
print(f"愿你的每一天都充满阳光和欢笑,距离下次生日还有{days_until_next_birthday}天。")
def draw_birthday_message(name):
screen = turtle.Screen()
screen.setup(800, 400)
screen.bgcolor("lightblue")
turtle.penup()
turtle.goto(-350, 50)
turtle.pendown()
turtle.write(name, font=("Arial", 24, "bold"))
turtle.penup()
turtle.goto(-300, 150)
turtle.write("生日快乐!", font=("Arial", 18, "italic"))
turtle.hideturtle()
turtle.done()
def main():
today = datetime.date.today()
for name, birthday in birthdays.items():
age, days_until_next_birthday = calculate_age(birthday)
if today == birthday:
birthday_wish(name, age, 0)
draw_birthday_message(name)
else:
print(f"今天不是{name}的生日,距离下次生日还有{days_until_next_birthday}天。")
if __name__ == "__main__":
main()
```
三、代码说明
数据存储
使用字典`birthdays`存储姓名与出生日期,便于批量处理。
核心函数
`calculate_age`:计算年龄和下次生日天数。
`birthday_wish`:打印生日祝福语。
`draw_birthday_message`:使用`turtle`库绘制祝福信息。
主程序流程
遍历所有生日信息,判断是否为生日当天,执行祝福和绘制操作。
四、运行环境要求
安装Python(推荐Python 3.6及以上版本)。
使用集成开发环境(如VS Code、PyCharm)或命令行运行脚本。
通过以上步骤,你可以在电脑上实现一个功能完善的生日祝福程序,支持批量处理和图形展示。