Python爬虫作业

python青苔计划(六)打印万年历

2017-04-23  本文已影响0人  请万万喝水
青苔计划

/(ㄒoㄒ)/~~

我这样的小白

万年历打完,感觉身体被掏空

请给我暖暖的拥抱 ╮(╯╰)╭

----------正经的分割线----------

任务要求

刚看到要打印万年历,我彻底懵逼了,从何打起?怎么打!特别是把农历和阳历搞混了,被农历中的闰月的概念折磨的死去活来,一番折磨后彭老师在学习群中再次强调要分拆目标(PS:分拆真的是一种能力)

目标分拆

1.判断是否为闰年

#判读是否为闰年
def yes_or_not_leap_year(year): #定义函数
    if year%4==0 and year%100!=0 or year%400==0:
        return True #返回值供计算2月天数使用
    else:
        return False

2.判断每个月的天数

#判断每个月的天数,并返回对应月的天数,供计算输入日期与1990年1月1日的天数差
def days_of_the_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 yes_or_not_leap_year(year):#根据是否为闰年,返回2月对应的天数
        return 29
    else:
        return 28

3.计算查询的日期距离1990年1月1日相差多少天

#计算查询的日期距离1990年1月1日相差多少天
def days_between_to_19900101(year,month):
    sum_days=0
    for y in range(1990,year):#计算相差年份对应的天数
        if yes_or_not_leap_year(year):
            sum_days=sum_days+366
        else:
            sum_days=sum_days+365
    for m in range(1,month):将本年至查询日期的天数计入
        sum_days=sum_days+days_of_the_month(year,month)
    return sum_days

4.计算查询月1号对应的是星期几

#判断一个月的第一天是星期几,以1990年1月1日为时间参考
def the_firstday_of_month(year,month):
    return 1+days_between_to_19900101(year,month)%7

5.打印万年历QAQ~

def print_wannianli(year,month):
    print(year," ",month)
    print("   "'星期一'"     " '星期二'"     "'星期三'"     "'星期四'"     "'星期五'"     "'星期六'"     "'星期日')
    i=the_firstday_of_month(year,month)
    print(('     A     '*(i-1)),end="")
    for p in range(1,days_of_the_month(year,month)+1):
        if i%7!=0:
            if len(str(p))==1:
                print('     ',end="")
                print(p,end='')
                print('     ',end="")
            else:
                print('    ', end="")
                print(p, end='')
                print('     ', end="")
        else:
            print('     ',end="")
            print(p)
        i=i+1

6函数调用

year=int(input("请输入要查询的年份"))
month=int(input("请输入要查询的月份"))
print_wannianli(year,month)

泪和汗

第一次尝试

经彭老师提醒后,加入日期的判断,终于可以了,日期中关键的几个空格我用了“A”代替,为了只管看到输出,其实可以删去

修正后

完整代码:打印万年历

#打印万年历
#1.判断是否为闰年
#2.计算每种情况下,每个月份的天数
#3.由2计算每年的天数
#4.计算每月一日对应的星期,基于1990年1月1日是星期一


#判读是否为闰年
def yes_or_not_leap_year(year):
    if year%4==0 and year%100!=0 or year%400==0:
        return True
    else:
        return False

#判断每个月的天数
def days_of_the_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 yes_or_not_leap_year(year):
        return 29
    else:
        return 28

#计算查询的日期距离1990年1月1日相差多少天
def days_between_to_19900101(year,month):
    sum_days=0
    for y in range(1990,year):
        if yes_or_not_leap_year(year):
            sum_days=sum_days+366
        else:
            sum_days=sum_days+365
    for m in range(1,month):
        sum_days=sum_days+days_of_the_month(year,month)
    return sum_days

#判断一个月的第一天是星期几
def the_firstday_of_month(year,month):
    return 1+days_between_to_19900101(year,month)%7
#打印日历
def print_wannianli(year,month):
    print(year," ",month)
    print("   "'星期一'"     " '星期二'"     "'星期三'"     "'星期四'"     "'星期五'"     "'星期六'"     "'星期日')
    i=the_firstday_of_month(year,month)
    print(('     A     '*(i-1)),end="")
    for p in range(1,days_of_the_month(year,month)+1):
        if i%7!=0:
            if len(str(p))==1:
                print('     ',end="")
                print(p,end='')
                print('     ',end="")
            else:
                print('    ', end="")
                print(p, end='')
                print('     ', end="")
        else:
            print('     ',end="")
            print(p)
        i=i+1

#输入及启动程序
year=int(input("请输入要查询的年份"))
month=int(input("请输入要查询的月份"))
print_wannianli(year,month)

第一周打卡成功

青苔计划一周记

上一篇下一篇

猜你喜欢

热点阅读