美文网首页
《Python 函数》06 - 练习:日历

《Python 函数》06 - 练习:日历

作者: 波波课堂 | 来源:发表于2019-01-16 16:50 被阅读1次

    相关文章

    01 - 课程介绍及概述(挖坑待填)
    02 - 函数调用
    03 - 定义函数
    04 - 函数参数
    05 - 函数返回值
    06 - 练习:日历
    07 - 变量作用域
    08 - 参数扩展
    09 - 可变参数

    学了这么多东西,不练习一下怎么行。准备好了吗小老弟?我们要制作一个简单的日历,用户输入年月之后,会在控制台显示出指定月份的日历。课程结束大家还可以寄几扩展~

    由于简书在 Markdown 编辑模式下无法插入视频,所以放了视频链接:
    《Python 函数》06 - 练习:日历(视频)

    函数调用 - 课堂笔记

    ''' 扩展可以用的特殊符号 (自己复制使用即可):
    ╔═╦╗ ┏━┳┓
    ║A║║ ┃B┃┃
    ╚═╩╝ ┗━┻┛
    '''
    
    def get_week_with_date(y, m, d):
        ''' 根据年月日计算星期几 '''
        # 把 1、2 月当做上一年的 13、14 月使用
        y = y - 1 if m == 1 or m == 2 else y
        m = 13 if m == 1 else (14 if m == 2 else m)
        # 使用公式计算出星期几并返回
        w = (d + 2 * m + 3 * (m + 1) // 5 + y + y // 4 - y // 100 + y // 400) % 7 + 1
        return w
    
    def is_leap_year(y):
        ''' 判断一个年份是否是闰年 '''
        if y % 400 == 0 or (y % 4 == 0 and y % 100 != 0):
            return True
        return False
    
    def get_days_in_month(y, m):
        ''' 获取指定月份的天数 '''
        if m in [1, 3, 5, 7, 8, 10, 12]:
            # 1, 3, 5, 7, 8, 10, 12 月返回 31 天
            return 31
        elif m in [4, 6, 9, 11]:
            # 4, 6, 9, 11 月返回 30 天
            return 30
        else:
            # 2 月返回 29 天 (闰年) 或 28 天 (平年)
            return 29 if is_leap_year(y) else 28
    
    ''' 1. 提示用户输入年月 '''
    year = int(input("请输入年份: "))
    month = int(input("请输入月份: "))
    
    ''' 2. 计算这个月有多少天 '''
    days = get_days_in_month(year, month)
    
    ''' 3. 按照指定格式显示日期 '''
    # 显示日历标题
    print("一 二 三 四 五 六 日")
    print("-" * 20)
    # 显示指定月份所有日期
    for i in range(1, days + 1):
        # 计算当前日期是星期几
        w = get_week_with_date(year, month, i)
        if i == 1:
            # 在本月第一天打印之前, 用额外的空格进行缩进
            print(f"{' ' * (w - 1) * 3}", end="")
        else:
            if w == 1:
                # 每到周一换行显示
                print("")
        print(f"{i:2d}", end=" ")
    # 日历打印完毕后换行
    print("")
    

    函数调用 - 课件

    蟹蟹童鞋们的支持哟~

    (The End)

    相关文章

      网友评论

          本文标题:《Python 函数》06 - 练习:日历

          本文链接:https://www.haomeiwen.com/subject/izwmdqtx.html