#未优化的代码
1 #输出日历
def print_calendar(year,month,date = 1):
month_dict = {'':'January','':'February','':'March','':'April','':'May','':'June','':'July',
'':'August','':'September','':'October','':'November','':'December'} #数字月份转换为字符串,并判断月份和号数是否合法
if month in range(1,13) and date in range(1,31):
month_str = str(month)
if month_str in month_dict:
month_str = month_dict[month_str]
else:
print('月份或号数输入不合法')
return -1 #头部
print('%15s%8d'%(month_str,year))
print('-'*33)
print('Sun Mon Tue Wed Thu Fri Sat') #得到每月1号是星期几
first_day = get_start_day(year,month,1)
#得到此月有多少天
month_num = days_of_month(year,month) each_day = 0
#主体
for index in range(1,43): if index < first_day + 1:
print(' '*5,end = '')
else:
if (index - 1) % 7 == 0:
print('')
each_day += 1
if each_day > month_num:
return False
if each_day < 10:
if each_day == date:
print('%-5s'%('--'),end = '')
else:
print(' %-4d'%(each_day),end = '')
else:
if each_day == date:
print('%-5s'%('--'),end = '')
else:
print('%-5d'%(each_day),end = '') #输入一个年月日,判断是星期几
#需要一个比较标准:2010-1-1是星期五
#计算当前距离标准过了多少天(total_days % 7 + 5 -1)%7
#先遍历年份,是闰年+366,不是+365
#再遍历月份,31,30,29,28
def get_start_day(year,month,date):
total_days = 0
#遍历年份
for one_year in range(2010,year):
if is_leap_year(one_year):
total_days += 366
else:
total_days += 365
#print(total_days)
#遍历月份
for one_month in range(1,month):
total_days += days_of_month(year,one_month)
#print(total_days)
#加上当月号数,则求得总共过了多少天
total_days += date #求输入的年月日是星期几
day = (total_days % 7 + 5 - 1) % 7 #print(total_days)
#print(day)
return day #输入一个年份和月份,输出这月有多少天
#1,3,5,7,8,10,12--------31天
#4,6,9,11 --------------30天
#如果是闰年2------------29天
#不是闰年 2-------------28天
def days_of_month(year,month):
days = 0
if month in (1,3,5,7,8,10,12):
days = 31
elif month in (4,6,9,11):
days = 30
elif is_leap_year(year):
days = 29
else:
days = 28
return days def is_leap_year(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
return False def main():
print('*'*33)
year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
date = int(input('请输入号数:'))
print('*'*33)
#某年某月有多少天
#days = days_of_month(year,month)
#print('{}年{}月有{}天'.format(year,month,days))
#某年某月某日是星期几
#day = get_start_day(year,month,date)
#print('{}年{}月{}日是星期{}'.format(year,month,date,day))
#打印日历
print_calendar(year,month,date) #执行
main()

python打印日历的更多相关文章

  1. python 打印日历

    import calendar as c'''x = c.monthcalendar(2017,11) 使用这个结果打印出日历 s = 1while s <= 7: print('周%d '%( ...

  2. Python学习实践-----打印日历

    使用python语言实现在控制台打印日历 输入年.月.日 输出对应日历,指定的日数输出为'--' 程序没有做严格的输入验证,故输入整数即可. 以下为没有优化的源码: print_calendar.py ...

  3. Python实战练习——打印日历教程

    很长一段时间没有接触过C语言了,想来做这一行当已经有三两年了. 今天突然想起来以前用C语言在VC6上写代码的日子,想了想以前的一些实战练习. 所以今天打算用Python来写一个C语言以前练习的题目-日 ...

  4. Python打印格式化与字符串

    关于Python打印格式化与字符串,比较全面的总结,希望对大家有帮助~ # -*- coding: cp936 -*- ''' 打印格式 ''' print "a" print & ...

  5. python打印表格式数据,留出正确的空格和段落星号或注释

    python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...

  6. python打印万年历

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

  7. Oracle打印日历功能

    Oracle用SQL打印日历 1.1  打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D,  ...

  8. 使用java 打印日历

    package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { publi ...

  9. python 打印 emoji

    python 打印 emoji 如需转发,请注明出处:小婷儿的python  https://www.cnblogs.com/xxtalhr/p/10486506.html 一.Unicode字符集: ...

随机推荐

  1. MyBatis对数据库的增删改查操作,简单演示样例

    之前一直有用Hibernate进行开发.近期公司在使用Mybatis.依据网上的演示样例,做了一个简单的Demo,以便日后复习 使用XMl方式映射sql语句 整体结构例如以下图 watermark/2 ...

  2. cacti安装和第三方模块的导入

    Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监測图形分析工具.Cacti是通过 snmpget来获取数据,使用 RRDtool绘绘图形,并且你全然能够不须要了解RRD ...

  3. saltstack结合Elasticsearch来做salt运行结果展现

    salt尽管好用可是机器管理的越来越多,通过cli的结果输出方式查看运行结果越来越多不能满足我的需求.并且作为一个推动运维自己主动化的攻城狮,使用这样的人眼查看运行结果的方式简直土到掉渣.尽管别人看起 ...

  4. C++第11周(春)项目3 - 点类派生直线类

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 [项目3 - 点类派生直线类]定义点类Poin ...

  5. bzoj5441: [Ceoi2018]Cloud computing

    跟着大佬做题.. 这题也是有够神仙了.观察一下性质,c很小而f是一个限制条件(然而我并不会心态爆炸) %了一发,就是把电脑和订单一起做背包,订单的c视为负而电脑的v为负,f由大到小排序做背包 #inc ...

  6. C# Socket 您的主机中的软件中止了一个已建立的连接 An established connection was aborted by the software in your host machine

    http://tieba.baidu.com/p/3223234493 问题: 服务端在接收客户端数据的时候,抛了个异常出来:System.Net.Sockets.SocketException: 您 ...

  7. SpringMVC使用POST方法传递数据,却出现Request method 'GET' not supported?

    转自:https://segmentfault.com/q/1010000011245770 问题:没有使用get获取当前页面解决方案:   @RequestMapping(value = " ...

  8. 2015 多校赛 第四场 1010 (hdu 5336)

    Problem Description XYZ is playing an interesting game called "drops". It is played on a r ...

  9. mvc3结合spring.net-依赖注入

    namespace Tuzi.Models.IService { public interface IPersonService { string say(string words); } names ...

  10. 【PostgreSQL-9.6.3】表操作语句

    1.创建数据表 create table table_name ( 字段1 数据类型[列级别约束条件][默认值], 字段2 数据类型[列级别约束条件][默认值], 字段3 数据类型[列级别约束条件][ ...