如何用python打印日历
1、计算星期几的公式 ,注意:把 1、2 月当做上一年的 13、14 月使用
(d + 2 * m + 3 * (m + 1) // 5 + y + y // 4 - y // 100 + y // 400 ) % 7 + 1
2.计算星期几
def get_week_with_date(y, m, d):
'''根据年月日计算星期几'''
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
3. 判断是否为闰年
def is_leap_year(y):
'''判断是否为闰年'''
if y % 400 == 0 or (y % 4 == 0 and y % 100 != 0):
return True
return False
4. 计算这个月有多少天
def get_days_in_month(y, m):
'''获取指定月份天数'''
if m in [1, 3, 5, 7, 8, 10, 12]:
return 31
elif m in [4, 6, 9, 11]:
return 30
else:
return 29 if is_leap_year(y) else 28
5. 提示用户输入年月
year_a = int(input("请输入年份:"))
month_a = int(input("请输入月份:"))
6. 获取月份天数
days = get_days_in_month(year_a, month_a)
7. 按照指定格式显示日期
print("ON TW TH FO FI SI SE")
print("_____________________")
for i in range(1, days + 1):
w = get_week_with_date(year_a, month_a, i)
if i == 1:
# 根据每月一号第一天是星期几打印空格
print(f"{' ' * (w - 1) * 3}", end="")
else:
if w == 1:
print("")
print(f"{i:2d}", end=" ")
print("")

1488

被折叠的 条评论
为什么被折叠?



