《Python 函数》06 - 练习:日历
2019-01-16 本文已影响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)