Python——万年历案例

文章目录


需求

输入年份和月份可以输出当年当月的日历


一、代码展示

python 复制代码
# 提示语句  年 月
# 判断是否为闰年的
def isLeapYear(year):
    if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
        return True
    else:
        return False

# 给定月份,算出来该月份有几天
def getDayOfMonth(year,month):
    if month == 1 or month == 3 or month == 5 or month == 7 or month==8 or month==10 or month==12:
        return 31
    elif month == 4 or month == 6 or month == 9 or month == 11:
        return 30
    else:
        if isLeapYear(year):
            return 29
        else:
            return 28


while True:
    yearStr = input("请输入年份(数字):")
    if yearStr.isdigit():
        year=int(yearStr)
        monthStr = input("请输入月份(1-12):")
        if monthStr.isdigit() and  1 <= int(monthStr) <=12:
            month=int(monthStr)
            # 计算该年月距离 1900-01-01的总天数
            totalDays = 0
            for y in range(1900,year):
                if isLeapYear(y):
                    totalDays += 366
                else:
                    totalDays += 365
            # 将剩余月份的天数相加
            for m in range(1,month):
                totalDays += getDayOfMonth(year,m)

            print(totalDays)
            # 该年该月的第一天是星期几
            firstDayOfMonth = (totalDays+1) % 7
            print(firstDayOfMonth)
            # 接着进行格式化输出
            print("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t")
            # 规律 星期几就打印几个空格
            # 一个tab 两个汉字
            # print("\t"*2)
            counter = firstDayOfMonth
            print("\t"*2*firstDayOfMonth,end="")
            # 打印几号
            dayOfMonth = getDayOfMonth(year,month)
            for day in range(1,dayOfMonth+1):
                print(day,end="\t\t")
                counter += 1
                # 控制换行,没打印7个值包括空白都换行
                if counter % 7 == 0:
                    print()
            print()

        else:
            print("输入的数据不合法,请输入1~12之间的数字")
    else:
        print("请输入数字,不要闹")

二、结果展示


相关推荐
默_笙1 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_426003961 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
千里马学框架1 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
长沙三为智能科技1 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
AFinalStone1 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
致远ccc2 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试