python输出日历_python打印日历

#未优化的代码

1 #输出日历

2 def print_calendar(year,month,date = 1):3 month_dict = {'1':'January','2':'February','3':'March','4':'April','5':'May','6':'June','7':'July',4 '8':'August','9':'September','10':'October','11':'November','12':'December'}5

6 #数字月份转换为字符串,并判断月份和号数是否合法

7 if month in range(1,13) and date in range(1,31):8 month_str =str(month)9 if month_str inmonth_dict:10 month_str =month_dict[month_str]11 else:12 print('月份或号数输入不合法')13 return -1

14

15 #头部

16 print('%15s%8d'%(month_str,year))17 print('-'*33)18 print('Sun Mon Tue Wed Thu Fri Sat')19

20 #得到每月1号是星期几

21 first_day = get_start_day(year,month,1)22 #得到此月有多少天

23 month_num =days_of_month(year,month)24

25 each_day =026 #主体

27 for index in range(1,43):28

29 if index < first_day + 1:30 print(' '*5,end = '')31 else:32 if (index - 1) % 7 ==0:33 print('')34 each_day += 1

35 if each_day >month_num:36 returnFalse37 if each_day < 10:38 if each_day ==date:39 print('%-5s'%('--'),end = '')40 else:41 print('%-4d'%(each_day),end = '')42 else:43 if each_day ==date:44 print('%-5s'%('--'),end = '')45 else:46 print('%-5d'%(each_day),end = '')47

48

49 #输入一个年月日,判断是星期几

50 #需要一个比较标准:2010-1-1是星期五

51 #计算当前距离标准过了多少天(total_days % 7 + 5 -1)%7

52 #先遍历年份,是闰年+366,不是+365

53 #再遍历月份,31,30,29,28

54 defget_start_day(year,month,date):55 total_days =056 #遍历年份

57 for one_year in range(2010,year):58 ifis_leap_year(one_year):59 total_days += 366

60 else:61 total_days += 365

62 #print(total_days)

63 #遍历月份

64 for one_month in range(1,month):65 total_days +=days_of_month(year,one_month)66 #print(total_days)

67 #加上当月号数,则求得总共过了多少天

68 total_days +=date69

70 #求输入的年月日是星期几

71 day = (total_days % 7 + 5 - 1) % 7

72

73 #print(total_days)

74 #print(day)

75 returnday76

77 #输入一个年份和月份,输出这月有多少天

78 #1,3,5,7,8,10,12--------31天

79 #4,6,9,11 --------------30天

80 #如果是闰年2------------29天

81 #不是闰年 2-------------28天

82 defdays_of_month(year,month):83 days =084 if month in (1,3,5,7,8,10,12):85 days = 31

86 elif month in (4,6,9,11):87 days = 30

88 elifis_leap_year(year):89 days = 29

90 else:91 days = 28

92 returndays93

94 defis_leap_year(year):95 if year % 4 == 0 and year % 100 != 0 or year % 400 ==0:96 returnTrue97 returnFalse98

99 defmain():100 print('*'*33)101 year = int(input('请输入年份:'))102 month = int(input('请输入月份:'))103 date = int(input('请输入号数:'))104 print('*'*33)105 #某年某月有多少天

106 #days = days_of_month(year,month)

107 #print('{}年{}月有{}天'.format(year,month,days))

108 #某年某月某日是星期几

109 #day = get_start_day(year,month,date)

110 #print('{}年{}月{}日是星期{}'.format(year,month,date,day))

111 #打印日历

112 print_calendar(year,month,date)113

114 #执行

115 main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值