第四章 Python函数使用 10-函数综合练习

万年历

image-20221130174508484

def print_calendar(days, week):
    """
    打印万年历
    :param days: 这个月有多少天
    :param week: 这个月的第一天是星期几,以0表示星期日
    """
    # 打印表头
    print("星期日\t\t星期一\t\t星期二\t\t星期三\t\t星期四\t\t星期五\t\t星期六")
    # 定义一个变量,计数器
    counter = 0
    # 打印第一行的空白
    for i in range(week):
        print(end="\t\t\t")
        counter += 1
    # 打印数字
    for i in range(1, days + 1):
        print(i, end="\t\t\t")
        counter += 1
        if counter % 7 == 0:
            print()


def is_leap_year(year):
    """
    判断是否是闰年
    :param year: 年份
    :return: True => 闰年, False => 平年
    """
    return year % 4 == 0 and year % 100 != 0 or year % 400 == 0


def get_month_days(year, month):
    """
    计算一个月有多少天
    :param year: 年份
    :param month: 月份
    :return: 有多少天
    """
    if month in [1, 3, 5, 7, 8, 10, 12]:
        return 31
    elif month in [4, 6, 9, 11]:
        return 30
    elif month == 2:
        # Python中三目运算符的实现,如果is_leap_year成立,返回29,否则返回28
        return 29 if is_leap_year(year) else 28
        # if is_leap_year(year):
        #     return 29
        # else:
        #     return 28


def get_total_days(year, month):
    """
    计算这个月的第一天,距离1900年1月1日相差多少天
    :param year: 年份
    :param month: 月份
    :return: 相差的天数
    """
    total = 0
    # 整年计算,计算1900-01-01到year-01-01相差多少天
    for y in range(1900, year):
        total += (366 if is_leap_year(year) else 365)
    # 计算year-month-01是这一年的第几天
    for m in range(1, month):
        total += get_month_days(year, m)

    return total + 1


year = int(input("请输入一个年份: "))
month = int(input("请输入一个月份: "))
# 计算这个月的第一天是星期几
week = get_total_days(year, month) % 7
# 计算这个月有多少天
days = get_month_days(year, month)

# 打印万年历
print_calendar(days, week)
函数翻转教学设计可以通过以下步骤来实现。 首先,我们可以介绍翻转函数的概念和用途,例如通过将字符串或列表的元素反向排列。可以使用一些简单的例子来说明函数翻转的实际应用价值,以提高学生的兴趣和理解。 接下来,我们可以详细介绍翻转函数的编写和调用过程。可以先从简单的字符串翻转开始,例如编写一个函数来实现将给定字符串反向输出的功能。解释函数的输入参数和返回值,并提供一些示例来帮助学生理解。 然后,我们可以介绍如何处理列表翻转。可以编写一个用于列表翻转的函数,并通过一些实例来演示如何使用函数。可以讨论在原地翻转和创建新列表两种方式之间的区别,并帮助学生理解它们的不同用途和特点。 在学生掌握了基本的翻转函数后,可以引入一些扩展知识,例如如何翻转多维数组、如何处理特殊情况(如翻转空字符串或空列表)等。可以提供一些复杂一些的编程问题,让学生利用所学的知识来解决。 最后,可以提供一些练习题和项目,让学生自主实践和巩固所学的内容。可以设计一些具有挑战性的问题,以帮助学生发展解决问题的能力和创造力。 总之,通过逐步引入概念、提供示例、练习和探讨不同场景下的应用,可以设计一节有趣且有效的函数翻转教学课程,帮助学生掌握Python函数翻转的概念和技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值