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. 用linux下的C语言编程万年历,shell编程万年历月历和对应c语言程序.docx

    shell编程万年历月历和对应c语言程序.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网 ...

  2. python教程很详细_Python编程入门教程:从入门到高级,非常详细

    本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...

  3. python万年历实验报告_Python编程——万年历

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

  4. python中调用万年历_python 打印万年历

    题目:打印万年历 已知条件 闰年条件:能被4整除且不能被100整除,或者能被400整除 1900年1月1日 是周一 解题思路 判断闰年; 判断当月有多少天; 这个月的1号是从周几开始的; 格式化打印日 ...

  5. python编程简易计算器_Python编程练习049:简单计算器实现

    以下代码用于实现简单计算器实现,包括两个数基本的加减乘除运算: 定义函数 def add(x, y): """相加""" return x ...

  6. python打印万年历_python打印万年历

    1.输入年份,输入月份 2.格式化输出本月的日历 3.思路输入年,月,打印对应年月的日历. 3.1,首先1970年是Unix系统诞生的时间,1970年成为Unix的元年,1970年1月1号是星期四,现 ...

  7. python多态的例子_Python编程之多态用法实例详解

    本文实例讲述了Python编程之多态用法.分享给大家供大家参考.具体分析如下: 什么是多态?顾名思义,多态就是多种表现形态的意思.它是一种机制.一种能力,而非某个关键字.它在类的继承中得以实现,在类的 ...

  8. python的速度问题_python编程如何提升速度篇

    1. Python编程速度技巧 1.1. 最常见 * 一个最常见的速度陷坑(至少是俺在没看到网上这篇介绍时陷进去 过好些次的) 是: 许多短字串并成长字串时, 大家通常会用: 切换行号显示 1 sh ...

  9. python常用单词下载_python编程词汇

    python编程词汇app非常实用的词汇辅助工具.python编程词汇app是面向程序开发人员打造的,汇集了各种编程语言备的词汇量,提供视频+语音+画笔+代码的交互的超强真实体验. 基本简介 pyth ...

  10. python 清空所有对象_Python编程思想(7):列表的增删改操作

    李宁老师已经在「极客起源」 微信公众号推出<Python编程思想>电子书,囊括了Python的核心技术,以及Python的主要函数库的使用方法.读者可以在「极客起源」 公众号中输入 160 ...

最新文章

  1. OpenCV4中的非典型深度学习模型
  2. (0042) iOS 开发之iOS10.3新特性:如何动态更换APP图标
  3. git pull 报错:git - error: RPC failed; curl 18 transfer closed with outstanding read data remaining 解决
  4. python模块与包
  5. 户外lisp导向牌如何安装_聚焦热点、难点,持续开展户外广告(招牌)专项整治...
  6. mysql如何开启对外连接?
  7. UVA10191 Longest Nap【排序】
  8. DJ 算法的队列优先优化
  9. python代码300行程序_Python小游戏之300行代码实现俄罗斯方块
  10. java web 网络安全_Java Web中的入侵检测及简单实现
  11. RHEL7中设置ssh
  12. [含论文+答辩PPT+任务书+中期检查表+源码等]S2SH洋酒销售系统|商城
  13. C#打开文件夹加载图片
  14. iPhone显示返回的是html界面,iPhone X怎么回到主界面?苹果X返回主页的两种方法...
  15. VOIP 语音视频通话 ---总述
  16. 知道创宇云安全发布服务器安全产品-365门神
  17. 数据扒一扒《隐秘的角落》到底怎么火的?
  18. C语言中输出26个字母
  19. Oracle执行UPDATE语句的步骤
  20. 了解V模型,W模型,H模型

热门文章

  1. mysql读写分离优点_mysql读写分离
  2. XUI 一个简洁而优雅的Android原生UI框架,解放你的双手!
  3. 人工智能语音如何实现?
  4. 如何将鼠标计算机配置放到板载,罗技G500S游戏鼠标配备有板载内存让鼠标脱离驱动实现自定义功能...
  5. iptable之我也不知道
  6. 全国重点城市建筑物矢量数据合集三(Shp格式+带高度)
  7. 编译ffmpeg报错ffmpeg yasm not found, use --disable-yasm for a crippled build
  8. C# Abp框架入门系列文章(一)
  9. python单行注释和多行注释分别用什么表示_Python多行注释和单行注释用法详解
  10. Redis客户端连接远程Redis服务器