首页 > 编程语言 >107. 项目57:简易节日倒计时——《跟老吕学Python·新手》

107. 项目57:简易节日倒计时——《跟老吕学Python·新手》

时间:2024-08-10 22:24:15浏览次数:8  
标签:节日 holiday Python 57 days datetime 倒计时 日期 吕学

107. 项目57:简易节日倒计时

107.1 目标

开发一个简易节日倒计时程序,用户可以选择一个节日,程序将计算并显示距离该节日的天数。

107.2 功能

  1. 用户选择一个节日。
  2. 程序计算从当前日期到节日的天数。
  3. 程序显示倒计时结果。

107.3 设计

  • 用户选择节日:用户从预设的节日列表中选择一个节日。
  • 日期计算:程序计算当前日期与节日之间的日期差。
  • 倒计时显示:程序以天数的形式显示倒计时。

107.4 实现步骤

  1. 提供用户界面供选择节日。
  2. 根据用户选择的节日确定节日日期。
  3. 计算当前日期与节日日期之间的差值。
  4. 显示倒计时结果。

107.5 代码实现

以下是实现上述功能的Python代码示例:

from datetime import datetime, timedelta

# 定义节日列表,格式为 (节日名称, 月, 日)
holidays = {
    "新年": (1, 1),
    "春节": (1, 22),  # 假设春节为农历正月初一
    "劳动节": (5, 1),
    "国庆节": (10, 1),
}

def calculate_days_until_holiday(holiday_name):
    today = datetime.now()
    year = today.year
    
    # 根据节日名称获取节日日期
    month, day = holidays[holiday_name]
    holiday_date = datetime(year, month, day)
    
    # 计算是否已经过了该节日
    if today > holiday_date:
        year += 1
        holiday_date = datetime(year, month, day)
    
    # 计算距离节日的天数
    days_until_holiday = (holiday_date - today).days
    return days_until_holiday

def main():
    print("请选择一个节日进行倒计时:")
    for name in holidays:
        print(name)
    
    chosen_holiday = input("请输入节日名称:").strip()
    if chosen_holiday in holidays:
        days = calculate_days_until_holiday(chosen_holiday)
        print(f"距离{chosen_holiday}还有{days}天。")
    else:
        print("未找到该节日,请重新输入。")

if __name__ == "__main__":
    main()

107.6 测试

  • 运行程序并选择一个节日。
  • 检查程序是否正确计算并显示距离节日的天数。

107.7 注意事项

  • 考虑处理节日日期变动的情况,如春节的日期每年不同。
  • 考虑实现跨年的节日倒计时计算。

107.8 小结

通过这个项目,您可以学习到日期和时间的处理,以及如何根据用户选择计算日期差。此外,您还可以探索如何设计用户交互界面。

标签:节日,holiday,Python,57,days,datetime,倒计时,日期,吕学
From: https://blog.csdn.net/molangmolang/article/details/140834624

相关文章

  • python-flask计算机毕业设计新冠肺炎疫情人员统计及打卡系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景自2019年底新冠肺炎疫情爆发以来,全球公共卫生体系面临了前所未有的挑战。疫情的快速传播要求各国政府及社区采取迅速且有效的防控措施,以遏......
  • python-flask计算机毕业设计胜者台球室业务信息管理系统设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着休闲娱乐产业的蓬勃发展,台球运动作为一种集竞技性、娱乐性和社交性于一体的体育活动,受到了广大消费者的喜爱。胜者台球室作为该领域的......
  • python-flask计算机毕业设计校园生活圈综合服务系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和高等教育改革的深入,校园生活日益丰富多元,学生对便捷、高效、个性化的校园服务需求日益增长。然而,传统的校园服务......
  • yolov5 onnx部署模型代码,python版本
    `importosimportcv2importnumpyasnpimportonnxruntimeimporttimefromtqdmimporttqdmfrommatplotlibimportpyplotaspltimportmathCLASSES=['jump_cap2','jump_cap4']classYOLOV5():definit(self,onnxpath):self.onnx_se......
  • Python中yaml模块的使用教程
    一、yaml文件介绍yaml是一个专门用来写配置文件的语言。1.yaml文件规则区分大小写;使用缩进表示层级关系;使用空格键缩进,而非Tab键缩进缩进的空格数目不固定,只需要相同层级的元素左侧对齐;文件中的字符串不需要使用引号标注,但若字符串包含有特殊字符则需用引号标注;注释标识......
  • python装饰器的集中使用姿势
    在Python中,装饰器是一种十分强大并且好用的语法,一些重复的代码使用装饰器语法的话能够使代码更容易理解及阅读。因此在这里简单总结了一下Python中装饰器的几种用法以及需要注意的事情。一、在装饰器中获取被装饰函数的参数假设我们在开发web的时候,需要做反爬。要判断接口的访......
  • Python类中__del__()、__call__()、__repr__()、__new__()、__hash__()方法
    1.__del__()销毁魔术方法触发时机:当一个对象在内存中被销毁的时候自动执行参数:至少有一个self,接收对象返回值:无作用:在对象销毁的时候做一些操作注意:程序自动调用此方法,不需要我们手动调用。classCat:def__init__(self,name):print("--init--")s......
  • Python字典的高级用法
    一、collections中defaultdict的使用1.字典的键映射多个值将下面的列表转成字典l=[('a',2),('b',3),('a',1),('b',4),('a',3),('a',1),('b',3)]一个字典就是一个键对应一个单值的映射,而上面的列表中有相同键。如果你想要一个键映射多个值,那么就需要将这多个值放到另外......
  • 2024最新版PyCharm下载安装详细教程,Python环境配置和使用指南,零基础保姆级教程
    一、简介PyCharm是一款PythonIDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如,调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。Pytho......
  • python3使用pyVmomi获取vCenter中告警信息语音告警
    原创文档编写不易,未经许可请勿转载,目前仅发布于博客园,其他平台均为非法转载。文档中有疑问的可以邮件联系我文章。邮箱:[email protected]一、说明文章分享在pyVmomi获取vCenter中的告警信息,对red级别的告警信息进行本地语音告警,记录告警信息到本地txt文件后清空当前vCenter上的......