利用python基础编写简单的日历

来源:互联网 发布:微信打开未备案域名 编辑:程序博客网 时间:2024/06/07 08:45

首先要理清楚逻辑,日历的难点在于如何使用基础知识将周几与对应的日期进行对应,我这里利用了1917年1月1日为星期1,计算累计到我们要查询的月份的天数来确定所查询月份的第一天为周几.

# 输出日历界面print("*" * 50)print("欢迎使用【天天日历】v2.0")# 接收用户输入的年份year_int = int(input("请输入年份:\n"))# 定义全局变量用于记录天数总和sum = 0if year_int >= 1917:    month_int = int(input("请输入月份\n"))    for year_every in range(1917, year_int):  # 遍历从1917年到用户输入年份 用于计算到用户所输入年份共多少天        if (year_every % 4 == 0 and year_every % 100 != 0) or \                                year_every % 400 == 0:  # 如果是瑞年则366天否则平年365天            sum += 366        else:            sum += 365    for month_every in range(1, month_int): # 遍历月份用于计算由1月份到用户输入月份的总天数        if month_every == 4 or month_every == 6 or \                        month_every == 9 or month_every == 11:            sum += 30        elif month_every == 2:            if (year_int % 1 == 0 and year_int % 100 != 0) or \                                    year_int % 400 == 0:                sum += 29            else:                sum += 28        else:            sum += 31    # 定义变量用于定义每个月的天数    day = 0    # 定义变量 用于计算当月第一天为周几    weak = sum % 7    print("日\t一\t二\t三\t四\t五\t六")    # 判断用户输入月份为多少天    if month_int == 4 or month_int == 6 or month_int == 9 or month_int == 11:        day = 30    elif month_int == 2:        if (year_int % 4 == 0 and year_int % 100 != 0) or \                                year_int % 400 == 0:            day = 29        else:            day = 28    else:        day = 31    # 输出指定空格数让第一天与周几对齐    print("\t"*weak,end="")    i = 1    while i <= day: # 遍历用户查询月份        weakend = ((sum+i)-1)% 7        # 如果余数为6 换行否则输出空格        if weakend == 6:            print("%d" %i)        else:            print(i,end="\t")        i += 1else:    print("系统正在维护暂时无法获取1917年之前的信息")