2017年五月份日历

万年历这个题目几乎是不论学哪种编程语言必要尝试的一个小知识,综合了循环,逻辑关系判断等各编程语言的基础知识。今天我们一起用Python实现简单的万年历功能(查看某年各个月份日历和查看确定月份日历)。

网上大概浏览了一部分代码,发现实现方法都是大同小异,本篇文章代码可能会略有不同,可供参考。

记得之前在学C语言的时候就去写过万年历,现在已经忘得一干二净了,用Python实现万年历主要参考了两篇文章,第一篇是向右奔跑老大之前写的java版万年历,还有一篇是在网上找的C语言实现万年历,大家也可以去参考这两篇文章的方法。

难点

万年历实现的难点自我感觉有以下几个:

1.计算某年一月一日为周几

2.计算某年确定月份的第一天为周几

3.整个日历格式的设定(调试是真的烦)

万年历实现

1.计算某年一月一日为周几

这里我看到网上大部分都是写的1990年一月一日为周一这个点进行判断计算其他年份的一月一日,或者是确定月份的第一天。还有一种是计算从1——年份-1这一段时间的总天数,然后+1除以7去计算得到该年份的一月一日或者是确定月份的第一天为周几(这个应该是一种计算问题,具体更多实现方法可以自己去查),这里我采用的是计算从1——该年的上一年的总天数+1,计算该年份的一月一日的周几。

**2.计算某年确定月份的第一天为周几 **

同样的道理,计算总天数之后加上今年已经过去的月份的总天数再加1除以7取余得到

3.格式问题

这个没办法,只能自己去调试,调整到一个合适的输出格式即可

文字表述可能不清楚,可以参考代码+注释

实现代码

# -*-coding:utf-8 -*-

# @name :Python万年历

# @author :loading_miracle

class Calendar(object):

days = [31,28,31,30,31,30,31,31,30,31,30,31]

def __init__(self, year=2017):#初始化默认2017年

self.year = year

if self.yearDays(year) == 366:

self.days[1] = 29

self.totalDays = 0

for i in range(1, self.year):

self.totalDays += self.yearDays(i)

#判断每年的天数

def yearDays(self,year):

return 366 if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 else 365

# 查看某个月的日历

def months(self,month):

totalDays = self.totalDays

for i in range(1,month):

totalDays+=self.days[i-1]

#计算确定月份的第一天为周几

self.week = (totalDays+1) % 7

self.show(month)

#查看全年日历

def wholeYear(self):

# 计算确定年份的一月一日为周几

self.week = (self.totalDays+1) % 7

for i in range(1,13):

self.show(i)

#显示输出函数

def show(self,month):

print '\t\t{}年{}月份日历'.format(self.year,month)

print 'Sun Mon Tues Web Thur Fri Sat'

print '-----------------------------------------'

begin = 1

for j in range(0, self.week):

print '%4s' % '',

while begin <= self.days[month - 1]:

print '%4d' % begin,

begin += 1

self.week = (self.week + 1) % 7

if self.week % 7 == 0:

print

print '\n\n'

if __name__ == "__main__":

data = Calendar()

data.wholeYear()

data.months(5)

效果截图

样例图

有问题的可以在下方评论,重点还是理解这个逻辑

python万年历实验报告_Python编程——万年历相关推荐

  1. python综合实验报告_Python程序设计实验报告五:综合运用三种基本结构进行程序设计(综合性实验)...

    安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名姚彩琴学号3190505129 成绩 日期 2020.4.22 指导老师修宇 [实验名称]综合运用三种基本结构进行程序设计(综合性实 ...

  2. python综合实验报告_Python程序设计 实验报告

    安徽工程大学 Python程序设计 实验报告 班级:物流192       姓名:刘马汉卿学号:319005211 成绩:            日期:2020年4月29日        指导老师:修 ...

  3. python数据分析实验报告_Python数据分析综合小练习:销售数据分析

    有这样一个小小的练习题: 卖电子商品的老板,每天记录了自己卖出的U盘,电脑支架,插座,电池,音箱,鼠标,usb数据线,手机充电线等数量,客户的需求是一方面,也可以通过客户购买关联性比较强的商品进行引导 ...

  4. python投资分析实验报告_Python的实验报告怎么写?

    以面向对象程序设计实验为例: 一.实验目的了解面向对象程序设计思想 了解对象.类.封装.继承.方法.构造函数和析构函数基本概念 掌握定义类.成员变量.成员函数.静态变量和静态方法 掌握通过类定义实现继 ...

  5. spark编程基础python版实验报告_Spark编程基础(Python版)

    章 大数据技术概述 1.1 大数据概念与关键技术 1.1.1 大数据的概念 1.1.2 大数据关键技术 1.2 代表性大数据技术 1.2.1 Hadoop 1.2.2 Spark 1.2.3 Flin ...

  6. python万年历实验报告_Python实现的简单万年历例子分享

    #!/usr/bin/env python2 #-*- coding:utf-8 -*- __author__ = 'jalright' """ 使用python实现万年 ...

  7. python爬虫实验报告_python爬虫实验

    原博文 2013-06-28 13:30 − 那天在新浪微博上看到北北出的题目,由于最近也在做类似的爬虫研究,所以就有了这个实验. 后来在QQ上和北北说了下,要求是啥都抓,就抓乌云的... 然后就开始 ...

  8. python数据分析实验报告_Python 数据分析入门实战

    本训练营中,我们将学习怎么样使用 Python 进行数据分析.课程将从数据分析基础开始,一步步深入讲解.从 Python 的基础用法到数据分析的各种算法,并结合各种实例,讲解数据分析过程中的方方面面. ...

  9. python面向对象实验报告_Python 面向对象 | 菜鸟教程

    Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...

最新文章

  1. Linux 下安装cnpm淘宝镜像命令npm
  2. Java切面理解_Spring AOP面向切面编程:理解篇
  3. UCenter实现同步登陆原理
  4. 2012年CS毕业生
  5. 人脸识别(二)——训练分类器
  6. 计算机与新闻业未来发展,计算机学院举办“智创未来,谈思维与职业发展”活动...
  7. 关于各种JOIN连接的解释说明【原创】
  8. 什么是云计算时代?学云计算能做什么呢
  9. EntityFramework Core并发导致显式插入主键问题
  10. JS获取短信验证码60秒
  11. ubuntu18.04窗口截图和选区截图快捷键
  12. BeX5使用疑难总结
  13. python爬虫入门实例
  14. Win11怎么设置鼠标箭头图案?Win11更换鼠标图案的方法
  15. 5s的app显示无法连接服务器,苹果手机无法连接到app store怎么办
  16. linux中grep的用法
  17. 科罗拉多州立大学计算机科学,科罗拉多州立大学的世界排名
  18. php 文件图片上传
  19. u检验、t检验、F检验、卡方检验详细分析
  20. 大数据算法_大数据算法解析,如何创建用户画像实现千人千面?

热门文章

  1. PyQt5安装失败总结
  2. adb命令 android 串口_Android adb 串口设备调试方法
  3. CSS中使盒子移动方法总结
  4. 基于Hadoop豆瓣电影数据分析(综合实验)
  5. MPC574x平台学习——CAN通信
  6. 系统可用性量表(SUS )
  7. Linux--自旋锁(介绍及API简介)
  8. 大数据学习计划【2019经典不断更新】
  9. java输出0-100之间的偶数、奇数
  10. 安卓系统怎么模拟java_电脑上安装安卓系统模拟器的方法(直接用JAVA虚拟成手机)...