用python纯手写一个日历

news2024/10/6 12:25:11

一、代码

# 月份名称数组
months = [
    "January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"
]
# 每月天数数组
month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]


# 判断是否是闰年
def leap_year(y):
    if (y % 100 != 0 and y % 4 == 0) or (y % 400 == 0):
        month_days[1] += 1


# 计算某年某月某日到该年第一月第一日的日数
def year_days(y, m, d):
    all_days = 0
    # 判断是否是闰年,闰年二月有29天
    leap_year(y)
    # 计算总日数
    for i in range(m - 1):
        all_days += month_days[i]
    all_days += d
    return all_days


# 得到某年某月某日是星期几
def week(y, m, d):
    all_days = 0
    if y == 1940:
        all_days = year_days(y, m, d) - 1
    else:
        # 计算总天数,包括闰年的额外一天
        for i in range(1940, y):
            all_days += 365 + ((y % 100 != 0 and y % 4 == 0) or (y % 400 == 0))
        all_days += year_days(y, m, d) - 1
    get = (all_days + 1) % 7
    return get


# 打印某月的日历
def show_month(y, m):
    # 判断是否是闰年,闰年二月有29天
    leap_year(y)
    week1 = week(y, m, 1)
    print('{}\n---------------------------'.format(month_days[m - 1]))
    print("Sun  Mon  Tue  Wed  Thu  Fri  Sat")
    date = 1
    # 遍历星期和日期
    while date <= week1 + month_days[m - 1]:
        flag = [0] * 7
        # 遍历一周的每一天
        for a in range(7):
            if date <= (week1 + month_days[m - 1]):
                if date < week1:
                    flag[a] = -1
                else:
                    flag[a] = date - week1
            else:
                flag[a] = -1

            date += 1

        # 打印一周的日期
        print(" ".join(f"{-1 if x == 0 else x:<4}" for x in flag))
    print()


# 主函数
def main():
    print("输入要查找的年月份")
    year = input("年:")
    month = input("月:")
    if not (year.isdigit() and month.isdigit()):
        print('请输入一个合法的日期!!!')
    else:
        show_month(int(year), int(month))


if __name__ == "__main__":
main()

二、运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1828984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity C#调用Android,IOS震动功能

最近在Unity上需要很原生移动端进行交互&#xff0c; 原理&#xff1a;新建一个android项目&#xff0c;把生成的app module给干掉&#xff0c;然后留下一个vibrationPlugin module&#xff0c;在这个module下写android震动代码&#xff0c;将这个android工程构建出来的 aar移…

26.1 WEB框架介绍

1. Web应用程序 1.1 应用程序有两种模式 应用程序的架构模式主要分为两种: C/S (客户端/服务器端)和B/S(浏览器/服务器端). * 1. C/S模式, 即客户端/服务器模式(Client/Server Model): 是一种分布式计算模式.它将应用程序的功能划分为客户端和服务器端两部分.在这种模式下, 客…

【教程】设置GPU与CPU的核绑(亲和力Affinity)

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 简单来说&#xff0c;核绑&#xff0c;或者叫亲和力&#xff0c;就是将某个GPU与指定CPU核心进行绑定&#xff0c;从而尽可能提高效率。 推荐与进程优先…

虚拟机Ubuntu系统安装JDK以及配置环境不懂随时私

1、在虚拟机中打开终端&#xff1a; 如果你使用的是 Linux 发行版&#xff08;如 Ubuntu、CentOS&#xff09;&#xff0c;打开终端窗口。 2、使用 wget 命令下载 JDK&#xff1a; 首先找到你想要下载的 JDK 版本的下载链接。通常&#xff0c;你可以在 Oracle 官方网站或者 Op…

讲解 Faster R_CNN原理:

Fast R-CNN改进 上图为论文中的图片 先使用CNN网络获得整体的特征图&#xff1a;这里可以卷积共享&#xff0c;加快速度 然后将原图中的Region Proposals(区域)映射到Feature Map中&#xff0c;获得一系 列RoI(感兴趣区域) 然后不再对每个RoI分别进行分类回归&#xff0c;而是通…

无限可能LangChain——概念指南之架构

本节包含对 LangChain 关键部分的介绍。 架构 LangChain 作为一个框架由多个包组成。 langchain-core 该包包含不同组件的基本抽象以及将它们组合在一起的方法。此处定义了LLM、向量存储、检索器等核心组件的接口。这里没有定义第三方集成。依赖项有目的地保持非常轻量级。…

DenseNet完成Cifer10任务的效果验证

本文章是针对论文《2017-CVPR-DenseNet-Densely-Connected Convolutional Networks》中实验的复现&#xff0c;使用了几乎相同的超参数 目录 一、论文中的实验 1.准确率 2.参数效率 3.不同网络结构之间的比较 二、超参数: 三、复现的实验结果&#xff1a; 1.DenseNet20…

编写一个简单的Mybatis插件

1.编写一个类&#xff0c;实现Intercepter这个接口 2.完成这个类的方法&#xff0c;并通过注解Intercepts来告诉Mybatis这个插件拦截哪个类和哪个方法 3.在Mybatis的全局配置文件里注册这个插件&#xff0c;让插件生效 4.玩一个实际功能的插件

CCPD数据集

官网&#xff1a;https://github.com/detectRecog/CCPD 其它介绍&#xff1a;https://blog.csdn.net/qianbin3200896/article/details/103009221 CCPD (Chinese City Parking Dataset, ECCV) provinces ["皖", "沪", "津", "渝", &…

机床网关功能特点、实施过程以及应用效果分享-天拓四方

随着工业4.0时代的到来&#xff0c;智能制造和工业互联网技术快速发展&#xff0c;机床作为制造业的核心设备&#xff0c;其智能化、网联化的需求日益迫切。机床网关作为连接机床与上层管理系统的关键枢纽&#xff0c;其重要性不言而喻。本案例将详细介绍机床网关的解决方案&am…

数据仓库和数据库有什么区别?

一、什么是数据仓库二、什么是数据库三、数据仓库和数据库有什么区别 一、什么是数据仓库 数据仓库&#xff08;Data Warehouse&#xff09;是一种专门用于存储和管理大量结构化数据的信息系统。它通过整合来自不同来源的数据&#xff0c;为企业提供统一、一致的数据视图&…

【百度智能体】零代码创建职场高情商话术助手智能体

一、前言 作为一个程序猿&#xff0c;工科男思维&#xff0c;走上职场后&#xff0c;总会觉得自己不会处理人际关系&#xff0c;容易背锅说错话&#xff0c;这时候如果有个助手能够时时刻刻提醒自己该如何说话如何做事情就好了。 而我们现在可以通过百度文心智能体平台构建各…

[论文精读]Line Graph Neural Networks for Link Prediction

论文网址&#xff1a;Line Graph Neural Networks for Link Prediction | IEEE Journals & Magazine | IEEE Xplore 论文代码&#xff1a;GitHub - divelab/LGLP 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法…

植物大战僵尸杂交版全新版v2.1解决全屏问题

文章目录 &#x1f68b;一、植物大战僵尸杂交版❤️1. 游戏介绍&#x1f4a5;2. 如何下载《植物大战僵尸杂交版》 &#x1f680;二、解决最新2.1版的全屏问题&#x1f308;三、画质增强以及减少闪退 &#x1f68b;一、植物大战僵尸杂交版 《植物大战僵尸杂交版》是一款在原版《…

【three.js】设置canvas画布背景透明

通过Three.js渲染一个模型的时候&#xff0c;不希望canvas画布有背景颜色&#xff0c;也就是canvas画布完全透明&#xff0c;可以透过canvas画布看到画布后面叠加的HTML元素图文&#xff0c;呈现出来一种三维模型悬浮在网页上面的效果。 比如我们现在的模型背景是黑色的&#…

linxu-Ubuntu系统上卸载Kubernetes-k8s

如果您想从Ubuntu系统上卸载Kubernetes集群&#xff0c;您需要执行以下步骤&#xff1a; 1.关闭Kubernetes集群&#xff1a; 如果您的集群还在运行&#xff0c;首先您需要使用kubeadm命令来安全地关闭它&#xff1a; sudo kubeadm reset在执行该命令后&#xff0c;系统会提示…

哪些数据管理知识领域需要做到数据全生命周期管理

一、数据生命周期 数据管理、数据治理、数据安全、元数据管理、数据治理等知识领域,都需要按照数据的生命周期开展管理工作。数据生命周期包括计划、设计/启用、创建/获取、存储/维护、使用、增强和处置。详见下图。 1.数据治理生命周期 1)规划:将数据要求与业务战略连接起…

HTTP-代理

HTTP-代理 web代理服务器是网络的中间实体&#xff0c;代理位于客户端和服务器之间&#xff0c;扮演者中间人的角色&#xff0c;在各端点之间来回传递http报文 web的中间实体 web上的代理服务器是代表客户端完成事务处理的中间人&#xff0c;如果没有web代理&#xff0c;htt…

拍抖音素材段子去哪里找?哪里有搞笑段子文案以及视频素材?

拍抖音视频非常火爆&#xff0c;很多人都在为找素材发愁。别担心&#xff0c;今天我给大家推荐几个非常不错的网站&#xff0c;保证你们找到满满的灵感&#xff0c;拍出更有趣的段子视频&#xff01; 蛙学府 首先要推荐的是蛙学府。这个网站不仅素材多&#xff0c;还提供各种段…

ChatGPT 网页会话过程数据传输分析以及横向对比

新建一个会话 https://chatgpt.com/backend-api/conversation POST 请求 {"action": "next","messages": [{"id": "aaa2d6d4-5a8b-473e-bd21-e3bf2ee4f571","author": {"role": "user"},&…