15_python_练习题——打印日历
来源:互联网 发布:淘宝网首页戴丝玉 编辑:程序博客网 时间:2024/06/05 04:40
python 本身有一个类库,可以直接打印日历,但是也能自己组织语言重新写出来打印日历的方法,本文说明这两种方法的使用
第一种方法
使用python自带的内部库
#!/usr/bin/python# coding:utf-8# 引入日历模块import calendar# 输入指定年月yy = int(input("输入年份: "))mm = int(input("输入月份: "))# 显示日历print(calendar.month(yy,mm))calendar.prcal(yy)运行结果:
输入年份: 2017输入月份: 3 March 2017Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30 31 2017 January February MarchMo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 1 2 3 4 5 1 2 3 4 5 2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12 9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 1916 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 2623 24 25 26 27 28 29 27 28 27 28 29 30 3130 31 April May JuneMo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 1 2 3 4 5 6 7 1 2 3 4 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 1110 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 1817 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 2524 25 26 27 28 29 30 29 30 31 26 27 28 29 30 July August SeptemberMo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 1 2 3 4 5 6 1 2 3 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 1010 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 1717 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 2424 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 3031 October November DecemberMo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 1 2 3 4 5 1 2 3 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 1716 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 2423 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 3130 31
calendar中有一个setfirstweekday()的方法,weekday的范围是 0 (Monday) to 6 (Sunday),即我们可以调整每周开始的那天到底是星期几
calendar.setfirstweekday(6) calendar.prcal(2016)
结果如下:
2016 January February MarchSu Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 4 5 3 4 5 6 7 8 9 7 8 9 10 11 12 13 6 7 8 9 10 11 1210 11 12 13 14 15 16 14 15 16 17 18 19 20 13 14 15 16 17 18 1917 18 19 20 21 22 23 21 22 23 24 25 26 27 20 21 22 23 24 25 2624 25 26 27 28 29 30 28 29 27 28 29 30 3131 April May JuneSu Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 7 1 2 3 4 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 1110 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 1817 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 2524 25 26 27 28 29 30 29 30 31 26 27 28 29 30 July August SeptemberSu Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 1010 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 1717 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 2424 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 3031 October November DecemberSu Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 1 2 3 4 5 1 2 3 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 1716 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 2423 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 3130 31
第二种方法
- is_leap_year 判断是否为闰年
- get_num_of_days_in_month 获得每月的天数
- get_total_num_of_days 获得自1800年1月1日以来经过的天数
- get_start_day 获得每月1日为星期几
- print_month_body 打印日历的数字部分
- get_month_name 获得每月的名称
- print_month_title 打印日历标题与头部部分
#!/usr/bin/python# coding=utf-8def is_leap_year(year): # 判断是否为闰年 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: return True else: return Falsedef get_num_of_days_in_month(year, month): # 给定年月返回月份的天数 if month in (1, 3, 5, 7, 8, 10, 12): return 31 elif month in (4, 6, 9, 11): return 30 elif is_leap_year(year): return 29 else: return 28def get_total_num_of_day(year, month): # 自1800年1月1日以来过了多少天 days = 0 for y in range(1, year): if is_leap_year(y): days += 366 else: days += 365 for m in range(1, month): days += get_num_of_days_in_month(year, m) return daysdef get_start_day(year, month): # 返回当月1日是星期几,由1800.01.01是星期三推算 return 1+get_total_num_of_day(year, month) % 7# 月份与名称对应的字典month_dict = {1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'}def get_month_name(month): # 返回当月的名称 return month_dict[month]def print_month_title(year, month): # 打印日历的首部 print ' ', get_month_name(month), ' ', year, ' ' print '-------------------------------------' print ' Sun Mon Tue Wed Thu Fri Sat ' def print_month_body(year, month): ''''' 打印日历正文 格式说明:空两个空格,每天的长度为5 需要注意的是print加逗号会多一个空格 ''' i = get_start_day(year, month) if i != 7: print ' ', # 打印行首的两个空格 print ' ' * i, # 从星期几开始则空5*几个空格 for j in range(1, get_num_of_days_in_month(year, month)+1): print '%4d' %j, # 宽度控制,4+1=5 i += 1 if i % 7 == 0: # i用于计数和换行 print ' ' # 每换行一次行首继续空格 # 主函数部分year = int(raw_input("Please input target year:"))month = int(raw_input("Please input target month:"))print_month_title(year, month)print_month_body(year, month)
1 0
- 15_python_练习题——打印日历
- 15_python_练习题——使用webdriver查询IP地址
- 02_python_练习题——图形界面
- 03_python_练习题——排列组合
- 04_python_练习题——企业利润
- 05_python_练习题——平方数
- 07_python_练习题——数值排序
- 08_python_练习题——乘法表
- 14_python_练习题——excel操作
- 17_python_练习题——打印指定目录下的文件和文件夹(相当于tree命令)
- 06_python_练习题——查找一年之中第几天
- 09_python_练习题——暂停一秒
- 11_python_练习题——日期格式显示
- 13_python_练习题——文件重定向
- 19_python_练习题——CSV文件读写练习
- 10_python_练习题——兔子问题与斐波那契數列
- 12_python_练习题——统计输入字符里面有多少
- 16_python_练习题——使用webdriver获取当前页面截屏以及滑动页面
- springmvc 配置文件
- git am *.patch err: has type 100644, expected 100755
- 线程学习--join()方法
- hiho一下 第139周 买零食
- LoadRunner中脚本回放问题及解决方法(下)
- 15_python_练习题——打印日历
- 块级元素与内联元素整理
- vmware kali 安装vm tools
- 【技巧】html中alt=的用法;
- 基本数据类型--取值范围
- 如何快速的学习selenium工具
- ES6笔记
- C# 网络编程
- ASP.net Core部署说明(Ubuntu)