我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python怎么实现万年历

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python怎么实现万年历

这篇“python怎么实现万年历”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python怎么实现万年历”文章吧。

一、题目描述

A:先输出提示语句,并接受用户输入的年、月。

B:根据用户输入的年,先判断是否是闰年。

C:根据用户输入的月来判断月的天数。

D:用循环计算用户输入的年份距1900年1月1日的总天数。

E:用循环计算用户输入的月份距输入的年份的1月1日共有多少天。

F:相加D与E的天数,得到总天数。

G:用总天数来计算输入月的第一天的星期数。

H:根据G的值,格式化输出这个月的日历!

二、解析

1、分析

根据题目的八个要求,可以看出有些功能是重复或者说需要相互调用的,所以可以用模块的思想将每个要求封装成函数;

2、功能

①判断是否是闰年函数

根据闰年的判断规则,如果年是4的倍数,但不是100的倍数则是闰年或者是400的整数倍也是闰年,所以函数需要传入一个参数(年份)

#判断闰年def B(year):    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:        return True    return False

②判断输入月的天数的函数

除了2月份会根据平年和闰年发生变化以外, 每月的天数是已经确定好的;所以此时需要调用已经定义好的判断闰年的函数才能确定二月的天数;所以函数需要传入两个参数(月份和年份)

此时有两个小技巧,一个是判断月份是那月,最开始用的是用相等加上or去判断是否满足条件,其实可以将大月或者小月的月份写到一个列表中,然后再通过in去判断;第二个是在确定天数时,可以先定义好一个常用值,然后根据月份去修改其值,最后返回常用值即可,这样就少了几行的赋值以及返回的代码

def C(year,month):    days = 31        #31天居多,设置为默认值    if month == 2 :    #2月份要判断是否是闰年        if B(year):            days=29        else:            days=28;    elif month in [4,6,9,11]:     #判断小月,只有30天        days=30    return days

③计算年份距离1900的总天数的函数

因为平年跟闰年的天数不一样,所以要调用判断闰年的函数,确定其一年的总天数;

总天数也就是相当于求每年的天数之和即可;所以需要去遍历每年的天数求其总和即为结果;所以函数需要传入一个参数(年份)

#某年到1900年的天数def D(year:int):    day = 0    for i in range(1900,year):        if B(i):            day +=366        else:            day +=365    return day

④ 月份距离1月1日的天数的函数

距离1月1日的天数也就是每月天数的总和,此时就先需要确定其每月的天数,也就是需要调用之前定义的函数,还需要知道的是其年份判断是否闰年,所以函数需要传入两个参数(年份和月份)

遍历每月的天数(通过调用函数而来),然后将其求和,得到的就是需要的结果

#某月到1月1号的天数def E(year:int,month:int):    days = 0    for i in range(1,month):        days += C(year,i)    return days

⑤确定星期几的函数

首先通过调用求年份距离的天数和月份的天数得到其天数总和,所以函数需要传入两个参数(月份和年份)

然后将总和加一(因为得到的是月份,而算天数时要奖当日计算再内),然后对7求余即为星期几

#确定星期几def G(year:int,month:int):    total_day = D(year) + E(year,month) + 1    week = total_day % 7    return week

⑥格式化输出日历函数

输出有两种格式,一种是星期日在第一天,一种是星期日在最后一天;

第一种方式:星期日在第一天,根据得到的星期几函数(也就是当月1号的星期几函数),可以确定第一天的位置(也就是1的位置);

日历也就是输出1到总天数(根据月份确定)在对应的位置(星期几),由于1号的位置已经确定,而一号前面的则为空,所以单独遍历输出空格,然后再输出日历;

一周对应的是七天,也就是每七天进行一次换行,所以还需要定义一个计数器

第二种方式:也就是星期日在最后一天,其他逻辑都是一样的,只是在确定1号的位置不一样;

本来周日的位置为第一个,但是现在变成了最后一个,也就是位置向后移了6位,所以只需要计算位置的时候先将其加上,然后再求余即可

#格式化输出def my_print(total:int):    # iCount = 0    # print("日\t一\t二\t三\t四\t五\t六")    # for i in range((G(year, month) % 7)):    #     print(end='\t')    #     iCount += 1    # for i in range(1, C(year, month) + 1):    #     print(i, end='\t')    #     iCount += 1    #     if iCount  % 7 == 0:    #         print('')    iCount = 0    print('一\t二\t三\t四\t五\t六\t日\t')    for i in range(((G(year,month) + 6) % 7)):        print(end='\t')        iCount +=1    for i in range(1,C(year,month) + 1):        print(i,end='\t')        iCount +=1        if iCount % 7 == 0:            print('')

三、源码

# -*- coding: utf-8 -*-from datetime import dateimport calendar # def B(year):#    if year/4==0 and  year/400 !=0:#        return True#    elif year/100 == 0 and year/400 ==0 :#        return True#    else:#         return False#判断闰年def B(year):    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:        return True    return False   # def C(year:int,month:int):#     days = 30#     if month in [1,3,5,7,8,10,12]:#         days = 31#     elif month == 2:#         if B(year):#             days = 29#         else:#             days = 28#     return days#每月的天数def C(year,month):     days = 31        #31天居多,设置为默认值    if month == 2 :    #2月份要判断是否是闰年        if B(year):            days=29        else:            days=28;    elif month in [4,6,9,11]:     #判断小月,只有30天        days=30    return days  #某年到1900年的天数def D(year:int):    day = 0    for i in range(1900,year):        if B(i):            day +=366        else:            day +=365    return day #某月到1月1号的天数def E(year:int,month:int):    days = 0    for i in range(1,month):        days += C(year,i)    return days #确定星期几def G(year:int,month:int):    total_day = D(year) + E(year,month) + 1    week = total_day % 7    return week #格式化输出def my_print(total:int):    # iCount = 0    # print("日\t一\t二\t三\t四\t五\t六")    # for i in range((G(year, month) % 7)):    #     print(end='\t')    #     iCount += 1    # for i in range(1, C(year, month) + 1):    #     print(i, end='\t')    #     iCount += 1    #     if iCount  % 7 == 0:    #         print('')    iCount = 0    print('一\t二\t三\t四\t五\t六\t日\t')    for i in range(((G(year,month) + 6) % 7)):        print(end='\t')        iCount +=1    for i in range(1,C(year,month) + 1):        print(i,end='\t')        iCount +=1        if iCount % 7 == 0:            print('') if __name__ == '__main__':    year = int(input('请输入年:'))    month = int(input('请输入月'))    my_print(G(year,month))

四、经验 

因为函数多,而且计算的结果不方便去口头的验算其结果,也就是说当结果不对时不知道是那出现的问题时,系统提供的

from datetime import dateimport calendar

两个模块中有方法可以得出其天数以及星期几的结果,这样就可以查找到底是哪一步出现的问题了;也可以通过print去验证单个的函数是否正确。

以上就是关于“python怎么实现万年历”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python怎么实现万年历

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python怎么实现万年历

这篇“python怎么实现万年历”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python怎么实现万年历”文章吧。一、题目描
2023-06-30

php代码怎么实现万年历

php代码实现万年历的方法:1、利用PHP的日期函数获取当前年月日;2、计算该月第一天对应的是周几;3、分别计算上下月对应的年数与天数,实现上下月切换即可。
2020-10-02

Java怎么实现简单的万年历

以下是一个简单的Java实现万年历的代码示例:```javaimport java.util.Scanner;public class Calendar {public static void main(String[] args) {Sc
2023-08-15

使用Java怎么实现一个万年历

这篇文章给大家介绍使用Java怎么实现一个万年历,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5.
2023-06-14

python万年历实现代码 含运行结果

本文实例为大家分享了python实现万年历的具体代码,供大家参考,具体内容如下#coding:utf-8 def leap_year(year):#判断平瑞年if year%4==0 and year%100!=0 or year%400=
2022-06-04

java万年历是如何实现的

Java万年历一般是通过Java Swing或JavaFX等图形界面库实现的。其实现过程大致如下:1. 设计一个窗口,包括年份、月份、日期等控件,以及一些按钮和标签。2. 使用Java中的日期类(如java.util.Date、java.u
2023-05-13

php代码如何实现万年历

这篇文章主要介绍“php代码如何实现万年历”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php代码如何实现万年历”文章能帮助大家解决问题。php代码实现万年历的方法:1、利用PHP的日期函数获取当前
2023-06-26

Vue实现万年日历的示例详解

又是一个老生常谈的功能,接下来会从零实现一个万年日历,从布局到逻辑,再到随处可见的打卡功能。文中的示例代码简洁易懂,需要的可以参考一下
2023-01-12

计算机中批处理如何实现万年日历

这篇文章主要介绍了计算机中批处理如何实现万年日历,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。核心源码:: 月历查询工具 最初发表于CN-DOS:: 原创:foxjl 更新:
2023-06-08

Python怎么实现微信群万人同步直播

本篇内容主要讲解“Python怎么实现微信群万人同步直播”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现微信群万人同步直播”吧!一、背景介绍需求很简单:能做到24个微信大群(共
2023-06-16

怎么在python中实现按行遍历Dataframe

怎么在python中实现按行遍历Dataframe?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相
2023-06-14

php怎么实现日历

php实现日历的方法:1、创建一个PHP示例文件并设置编码为utf-8;2、创建table表格;3、通过mktime等函数获取时间日期;4、通过for循环实现日历功能即可。
2016-05-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录