返回顶部
首页 > 资讯 > 后端开发 > Python >python怎么实现万年历
  • 254
分享到

python怎么实现万年历

2023-06-30 15:06:28 254人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇“python怎么实现万年历”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“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怎么实现万年历”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网Python频道。

--结束END--

本文标题: python怎么实现万年历

本文链接: https://lsjlt.com/news/329725.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python怎么实现万年历
    这篇“python怎么实现万年历”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python怎么实现万年历”文章吧。一、题目描...
    99+
    2023-06-30
  • php代码怎么实现万年历
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑PHP实现万年历 实现一个PHP万年历,先上图: 总体实现逻辑是:先把某月的天数展示在table里面。然后计算该月第一天对应的是周几。最后分别计算上下...
    99+
    2020-10-02
    php 万年历代码
  • Java怎么实现简单的万年历
    以下是一个简单的Java实现万年历的代码示例:```javaimport java.util.Scanner;public clas...
    99+
    2023-08-15
    Java
  • 利用python实现万年历的查询
    今天要用python做一个小功能,那就是实现万年历的查询。 首先看一下整体感觉 实现代码: def is_leap_year(year): if year/4==0 an...
    99+
    2024-04-02
  • Java实现万年历效果
    本文实例为大家分享了Java实现万年历效果的具体代码,供大家参考,具体内容如下 要求: 综合运用GUI编程、事件处理、Calendar类应用等知识设计一款月历,要求能通过输入(或选择...
    99+
    2024-04-02
  • 使用Java怎么实现一个万年历
    这篇文章给大家介绍使用Java怎么实现一个万年历,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5....
    99+
    2023-06-14
  • Java实现简单的万年历
    本文实例为大家分享了Java实现简单万年历的具体代码,供大家参考,具体内容如下 1 要求 1、输入年份; 2、输入月份; 3、输出某年某月的日历。 2 思路 1、实现从控制台接收年和...
    99+
    2024-04-02
  • python万年历实现代码 含运行结果
    本文实例为大家分享了python实现万年历的具体代码,供大家参考,具体内容如下 #coding:utf-8 def leap_year(year):#判断平瑞年 if year%4==0 and ...
    99+
    2022-06-04
    万年历 代码 python
  • php代码如何实现万年历
    这篇文章主要介绍“php代码如何实现万年历”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php代码如何实现万年历”文章能帮助大家解决问题。php代码实现万年历的方法:1、利用PHP的日期函数获取当前...
    99+
    2023-06-26
  • java万年历是如何实现的
    Java万年历一般是通过Java Swing或JavaFX等图形界面库实现的。其实现过程大致如下:1. 设计一个窗口,包括年份、月份...
    99+
    2023-05-13
    java万年历 java
  • python新手练习实例之万年历
    目录一、题目描述二、解析1、分析2、功能三、源码四、经验 总结一、题目描述 A:先输出提示语句,并接受用户输入的年、月。 B:根据用户输入的年,先判断是否是闰年。 C:根据...
    99+
    2024-04-02
  • Vue实现万年日历的示例详解
    目录前言1.日历的布局2.日期数据的产生3.年月的变化4.连续最长打卡日期5.补卡日期前言 又是一个老生常谈的功能,接下来会从零实现一个万年日历,从布局到逻辑,再到随处可见的打卡功能...
    99+
    2023-01-12
    Vue实现万年日历 Vue万年日历 Vue万年历
  • C++面向对象实现万年历的示例代码
    目录引入Controller.hController.cppViewDate.hViewDate.cppModelDate.hModelDate.cppmain.cpp各功能测试结果...
    99+
    2024-04-02
  • 计算机中批处理如何实现万年日历
    这篇文章主要介绍了计算机中批处理如何实现万年日历,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。核心源码:: 月历查询工具 最初发表于CN-DOS::&nb...
    99+
    2023-06-08
  • JavaScript实现年历效果
    本文实例为大家分享了JavaScript实现年历效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head...
    99+
    2024-04-02
  • 怎么用javascript制作年历
    本篇内容主要讲解“怎么用javascript制作年历”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用javascript制作年历”吧! ...
    99+
    2024-04-02
  • Win10日历没法加上日程该怎么办?万年历没法建立日程表处理方法
    Win10内置的万年历运用作用十分强劲,可以在上面加上一些待办事宜或日程,就不害怕担忧会忘却一些关键的事了。可是有客户体现自身的日历app没法建立日程,这是什么原因?下边就和小编一起来看看Win10日历没法加上日程的解决方案。方法一、运作W...
    99+
    2023-07-11
  • Python怎么实现微信群万人同步直播
    本篇内容主要讲解“Python怎么实现微信群万人同步直播”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现微信群万人同步直播”吧!一、背景介绍需求很简单:能做到24个微信大群(共...
    99+
    2023-06-16
  • 怎么在python中实现按行遍历Dataframe
    怎么在python中实现按行遍历Dataframe?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相...
    99+
    2023-06-14
  • php怎么实现日历
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php怎么实现日历?PHP实现的日历功能示例具体如下:<php header("Content-Type:text/html;charset=utf-8...
    99+
    2016-05-29
    PHP 日历
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作