python输出日历

题目:
输入年份、月份,输出当前月份日历

话不多说,先上源码:

第一种,未使用calendar库:

#判断是否为闰年
def is_leap_year(year):if (year % 4 == 0 and year % 100 != 0) or year % 400 ==0:return Trueelse:return False
#计算本年之前的天数
def sum_year_day(year):begain = 1921 #我们这里选择1921年为起始年sum1 = 0    while begain < year:if is_leap_year(begain):sum1 = sum1 + 366else:sum1 = sum1 + 365begain = begain + 1return sum1
#计算本年中本月之前的天数
def sum_month_day(year,month):i = 1sum2 = 0while i < month: #判断月份获取天数if i == 1 or i == 3 or i == 5 or i == 7 or i == 8 or i == 10 or i == 12:sum2 = sum2 + 31elif i == 2: #2月份时,判断是否为闰年if is_leap_year(year):sum2 = sum2 + 29else:sum2 = sum2 + 28else:sum2 = sum2 + 30i = i + 1return sum2
#计算当前月份天数
def current_day(year,month):day = 0if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:day =  31elif month == 2:if is_leap_year(year):day =  29else:day = 28else:day = 30return day
#计算每个月第一周需要空出的间隔
def gap(total):week = (total + 1) % 7 #间隔总数#print(week)count = 0i = 1while i <= week:i = i + 1print("\t",end='')count = count + 1if count % 7 == 0:print()return count
#输出当月日期
def c_calender(year,month,total):s = current_day(year,month)day = 1count = gap(total)while day <= s:print(day,'\t',end='')day = day + 1count = count +1if count % 7 == 0:print()
if __name__ == '__main__':year = int(input('请输入年份:'))month = int(input('请输入月份:'))sum1 = sum_year_day(year)sum2 = sum_month_day(year,month)total = sum1 + sum2print("Sun\tMon\tTue\tWed\tThu\tFir\tSat")c_calender(year,month,total)

结果示例:
在这里插入图片描述
总体思路:计算总天数,对7取余,从而得出每周前面需要空出的位置

第二种:使用calendar库

**

⽇历(Calendar)模块

**
此模块的函数都是⽇历相关的,例如打印某⽉的字符⽉历。
星期⼀是默认的每周第⼀天,星期天是默认的最后⼀天。更改设置需调⽤
calendar.setfirstweekday()函数。模块包含了以下内置函数:

序号函数及描述
1calendar.calendar(year,w=2,l=1,c=6) 返回⼀个多⾏字符串格式的year年年历,3个 ⽉⼀⾏,间隔距离为c。 每⽇宽度间隔为w字符。每⾏⻓度为21* W+18+2* C。l是 每星期⾏数。
2calendar.firstweekday( ) 返回当前每周起始⽇期的设置。默认情况下,⾸次载⼊ caendar模块时返回0,即星期⼀。
-3-calendar.isleap(year) 是闰年返回 True,否则为 false。>>> import calendar >>> print(calendar.isleap(2000)) True >>> print(calendar.isleap(1900)) False
4calendar.leapdays(y1,y2) 返回在Y1,Y2两年之间的闰年总数。
5calendar.month(year,month,w=2,l=1) 返回⼀个多⾏字符串格式的year年month⽉ ⽇历,两⾏标题,⼀周⼀⾏。每⽇宽度间隔为w字符。每⾏的⻓度为7* w+6。l是每 星期的⾏数。
-6--calendar.monthcalendar(year,month) 返回⼀个整数的单层嵌套列表。每个⼦列表 装载代表⼀个星期的整数。Year年month⽉外的⽇期都设为0;范围内的⽇⼦都由该⽉ 第⼏⽇表示,从1开始。-
7calendar.monthrange(year,month) 返回两个整数。第⼀个是该⽉的星期⼏,第⼆个是该⽉有⼏天。星期⼏是从0(星期⼀)到 6(星期⽇)。>>> import calendar >>> calendar.monthrange(2014, 11) (5, 30)(5, 30)解释:5 表示 2014 年 11 ⽉ 份的第⼀天是周六,30 表示 2014 年 11 ⽉份总共有 30 天。
8calendar.prcal(year, w=0, l=0, c=6, m=3) 相当于 print (calendar.calendar(year, w=0, l=0, c=6, m=3))。
-9--calendar.prmonth(theyear, themonth, w=0, l=0) 相当于 print(calendar.month(theyear, themonth, w=0, l=0))。-
10calendar.setfirstweekday(weekday) 设置每周的起始⽇期码。0(星期⼀)到6(星 期⽇)。
11calendar.timegm(tupletime) 和time.gmtime相反:接受⼀个时间元组形式,返回该 时刻的时间戳(1970纪元后经过的浮点秒数)。
-12--calendar.weekday(year,month,day) 返回给定⽇期的⽇期码。0(星期⼀)到6(星 期⽇)。⽉份为 1(⼀⽉) 到 12(12⽉)。-
import calendar# 获取一个月的日历
year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
calendar.setfirstweekday(6)
cal = calendar.month(year, month);
print("日历如下:");
print(cal);

结果:

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部