#未优化的代码
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. but no declaration can be found for element &#39;aop:aspectj-autoproxy&#39;.

    1.错误描写叙述 Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wildcard is ...

  2. Android 输入管理服务-输入事件到达之后的处理流程

    接上一篇博客"Android 输入管理服务启动过程的流程".这两天分析了Android 输入管理服务接收到输入事件之后的处理流程,详细流程例如以下面两图所看到的: 接下图

  3. 用MJExtension简化MVC

    首先引入MJExtension框架 模型 #import <Foundation/Foundation.h> @interface FundsModel : NSObject /** * ...

  4. spring+springmvc+hibernate架构、maven分模块开发样例小项目案例

    maven分模块开发样例小项目案例 spring+springmvc+hibernate架构 以用户管理做測试,分dao,sevices,web层,分模块开发測试!因时间关系.仅仅測查询成功.其它的准 ...

  5. 《Java编程思想》笔记

    第十章 (1)当生成一个内部类的对象时.此对象 与制造他的外围对象之间就有了一种联系,所以它能訪问其外围对象的全部成员,而不须要不论什么特殊条件. 此外,内部类还拥有其它外围类的全部元素的訪问权. ( ...

  6. Codeforces Round #332 (Div. 2)A. Patrick and Shopping 水

    A. Patrick and Shopping   Today Patrick waits for a visit from his friend Spongebob. To prepare for ...

  7. log4net preserveLogFileNameExtension 和 watch

    preserveLogFileNameExtension <log4net> <appender name="fileappender" type="l ...

  8. mac os lscpu 【转】

    CPU Information on Linux and OS X This is small blog post detailing how to obtain information on you ...

  9. hihocoder 1671 反转子串

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个只包含括号和小写字母的字符串S,例如S="a(bc(de)fg)hijk". 其中括号表示将里 ...

  10. glance rabbit