Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用Python制作万年历

用Python制作万年历

作者头像
算法与编程之美
发布于 2023-12-13 03:50:06
发布于 2023-12-13 03:50:06
4720
举报

1 问题

如何用Python制作2023年3月的万年历?

2 方法

所谓万年历,就是咱们电脑或者手机的日期会记录每个月每天对应星期几。用python来制作万年历,就是从键盘输入年份和月份,然后输出对应的日历表。

由于里面涉及到平年和闰年,所以需要先判断年份是平年还是闰年,同时之后求每个月天数时还要判断平年和闰年,首先要写一个判断函数leap_year()。然后,需要计算每个月的天数 ,其中需要注意2月份要判断平年和闰年,调用函数leap_year()即可。万年历从1990年1月1日开始,对应星期一。接下来我们计算输入年份year和月份month代表的日期,距离1990年1月1日的天数。

最后,进行显示函数,利用Input()函数从控制台输入。

代码清单 1

#判断平年和闰年 def leap_year(year): if(year%4==0 and year%100==0) or (year%400==0): return True else: return False #计算每个月的天数 def monthdays(year,month): if month==2: if leap_year(year): days=29 else: days=28 elif month in[4,6,9,11]: days=30 else: days=31 return days #计算总天数 def totaldays(year,month): yearday=0 for i in range(1990,year):#计算输入年份之前的 if leap_year(i): yearday+=366 else: yearday+=365 for i in range(1,month):#注意不能包括该月份 yearday+=monthdays(year,i) return yearday #显示函数 year=int(input("请输入年份:")) month=int(input("请输入月份:")) week=(totaldays(year,month))%7 #计算该月第一天是周几 print('一\t二\t三\t四\t五\t六\t日\t') for i in range(0,week): #前面打印week个空格 print("\t",end="") for i in range(1,monthdays(year,month)+1): #c从week+1的位置开始打印数字 if (totaldays(year,month)+i)%7==0: #天数为7的倍数时,记住要换行 print(i,end="\n") else: print(i,end="\t")

3 结语

针对用Python制作万年历的问题,提出使用if判断函数和定义leap_year()函数、monthdays()函数、totaldays()函数的方法,通过实验,证明该方法是有效的,此方法运用的知识常见易懂,但仍有不足或考虑不周的逻辑,未来可以继续研究更高级算法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
万年历matlab算法,万年历算法(万年历算法和分析)[通俗易懂]
用蔡勒(Zeller)公式 即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡.
全栈程序员站长
2022/07/22
1.8K0
第三天、计算某日是该年的第几天
该文介绍了如何通过编写代码计算某日是该年的第几天。首先介绍了如何输入年、月、日,并判断是否为闰年。然后介绍了平年和闰年的情况,并计算出给定日期是平年还是闰年。最后,根据输入的年月日,计算出该日期是该年的第几天。
Jack_Cui
2017/12/28
6780
第三天、计算某日是该年的第几天
万年历——ASP.NETCORE写法
这个是从实际2023年2月的日历,与咱们遍历的是一致的,计算好对应的星期起始很重要。
红目香薰
2023/05/02
7310
万年历——ASP.NETCORE写法
基于单片机的数字时钟(万年历)设计,DS1302芯片,年月日星期,论文,程序,原理图
电子万年历系统以AT89C52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片和DS18B20温度传感器,完成时间和温度的读取,全部信息由LCD1602液晶实时显示。
蒋宇智
2024/03/29
8850
基于单片机的数字时钟(万年历)设计,DS1302芯片,年月日星期,论文,程序,原理图
Python |今天是今年的的第几天问题解决方法
首先要判断是否为闰年,如果是闰年并且输入的月份大于等于三时,天数需要多加一天。然后加上每个月份的天数和这个月已经过去的天数。
算法与编程之美
2021/05/08
7910
Python |今天是今年的的第几天问题解决方法
万年历信息获取的Python代码
》一文中提到过,中国特色的调休会导致很多的周分析失效,因此我们可以通过爬取调休信息来进行修正。
陈学谦
2020/06/10
1.3K0
万年历信息获取的Python代码
Java_万年历(简单)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155342.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
7600
Java_万年历(简单)
C语言控制台版万年历
4.然后根据下图可以看出,该月的1号是星期几,我们在控制台上,就需要在前面打印几个\t控制符,比如2016年10月1日是星期六,那么前面我们就需要六个\t来制造空格空出来。
老九学堂-小师弟
2019/09/19
1.5K0
Java练习题:控制语句_打印日历
已知1900年1月1日是星期一,请用户输入查询的年份以及月份,查询出对应的万年历,示例如下图所示:
GoodTime
2024/03/05
1710
Java练习题:控制语句_打印日历
Day36 - Linux命令与Git
网络相关命令: ping - 检测网络可达性 - ICMP tracepath - 检查数据路由 ifconfig - 检查网络接口(网络适配器) ip - 查看配置网络接口相关信息 netstat - 查看网络状态(端口占用、进程、已建立的连接) netstat -nap sftp - 安全网络文件传输 scp - 安全文件拷贝
py3study
2020/01/06
3980
万年历--阴历日期和节气的获取
在项目中,如果涉及到日历历程,fullcalendar是一个可以参考的插件。他的相关资料可以在百度自行查找,之后的文章也会贴出一部分实例。
用户7293182
2022/01/20
3.8K0
万年历--阴历日期和节气的获取
【JAVA 课程设计 之 万年历】「建议收藏」
对JAVA来讲一个main方法写下了总感觉不太合适,把代码格式稍微改下层次和结构更清晰了点~
全栈程序员站长
2022/07/25
4740
【题解】1154.一年中的第几天
https://leetcode-cn.com/problems/day-of-the-year/
xlwang
2022/03/07
5330
【题解】1154.一年中的第几天
用C语言写的万年历---亲手写的。好累哦
#include <stdio.h> #include <stdlib.h> #include <string.h> #define str "   SUN   MON  TUE   WED   THU   FRI   SAT   " void menu();         //操作菜单 int leap(int year);        //判断某年是不是闰年 int days_month(int year,int month);        //返回某月的天数 int someday(in
marsggbo
2018/01/23
1.4K0
[漫谈C++|实践]C++ 万年历项目实践:深入探索语言特性与系统级编程
C++,作为一门广泛应用于系统级编程和性能优化的编程语言,在软件开发领域有着深厚的历史和强大的实力。近期,Embarcadero发布了 RAD Studio 12 Athens,其中包含了对 C++ 的一系列更新,引入了 Visual Assist 的集成以及对基于 Clang 的 C++ 编译器的显著更新。这些变化为使用 C++ 进行项目开发提供了更多的工具和特性。在这篇博客中,我们将结合这些最新资讯,分享一次使用 C++ 完成万年历项目的开发实践之旅。
数字扫地僧
2023/11/28
4870
java实现万年历[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155272.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
1.3K0
java实现万年历[通俗易懂]
编程入门、进阶100例(11-15)
样例输入:2014 3 4 样例输出:63 样例输入:2000 3 1 样例输出:61
Gorit
2021/12/09
4730
编程入门、进阶100例(11-15)
曾经做过的40道程序设计课后习题总结(四)
曾经做过的40道程序设计课后习题总结(四) 课后习题目录 1 斐波那契数列 2 判断素数 3 水仙花数 4 分解质因数 5 杨辉三角 6 学习成绩查询 7 求最大公约数与最小公倍数 8 完全平方数 9 统计字母、空格、数字和其它字符个数 10 求主对角线之和 11 完数求解 12 求s=a+aa+aaa+aaaa+aa...a的值 13 高度计算 14 乘法口诀 15 无重复三位数 16 菱形打印 17 利润计算 18 第几天判断 19 从小到大输出数列 20 猴子吃桃
闵开慧
2018/04/02
1.8K0
曾经做过的40道程序设计课后习题总结(四)
蓝桥杯:日期问题(我的绝望题)
⛳️1.对于日期类型的问题我们可以创建结构体来解题,本题三种情况,我们只需创建结构体数组,数组大小为3,且为全局变量。
用户11396661
2024/12/09
1630
蓝桥杯:日期问题(我的绝望题)
超越日历的智慧:探索节日节气、宜忌和星座生肖等信息的万年历API
当今社会,人们对时间的需求不仅仅是简单地知道日期,更多地是追求个性化、文化化和精确化的时间信息。在这个背景下,万年历API变得越来越重要,因为它可以提供超越传统日历的智慧,为我们带来了丰富的日期信息,如节日节气、天干地支纪年纪月纪日、宜忌、星座和生肖等。本文将来说一说万年历API~
用户10428865
2023/10/09
6570
相关推荐
万年历matlab算法,万年历算法(万年历算法和分析)[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档