当前位置:网站首页>【作业】2022.7.6 写一个自己的cal函数
【作业】2022.7.6 写一个自己的cal函数
2022-07-07 08:18:00 【Sprite.Nym】
在linux中用vim写日历函数,基本功能有:
- 输入月和年,输出日历
- 如果不输入月,但有年,则输出1-12月日历
- 如果都不输入,则输出当前日历
- 如果输入月,但不输入年,则默认今年
vim own_cal.py
import datetime
def first_day(m, y):
# 计算出公式中需要的m, y, c
if m == 1 or m == 2:
m += 12
y -= 1
c = y // 100
y %= 100
# 计算并返回每月第一天是星期几
return (y + y//4 + c//4 - 2 * c + 26 * (m+1) // 10) % 7
def total_days(m, y):
# 判断闰年
result = 1 if (y % 100 != 0 and y % 4 == 0) or (y % 400 == 0) else 0
# 判断天数
return 31 if m in [1, 3, 5, 7, 8, 10, 12] else (
result + 28 if m == 2 else 30
)
def get_cal(first_day, total_days):
# 创建cal列表
cal = ['日', '一', '二', '三', '四', '五', '六']
# 获得日历第一排的空格数
for i in range(first_day):
cal.append(' ')
# 获得剩余的日期
for i in range(1, total_days + 1):
cal.append(f'{
i: <2}')
return cal
def draw_cal(cal):
# 创建计数变量t
t = 0
for i in cal:
# t是7的倍数时换行,其他时候空格
print(f'\n{
i}', end='') if t % 7 == 0 else print(f' {
i}', end='')
t += 1
print('\n')
def cal_main(m, y):
y = int(y)
f_day = first_day(m, y)
t_days = total_days(m, y)
cal = get_cal(f_day, t_days)
print(f'{
y: >7}年{
m:0>2}月日历')
draw_cal(cal)
if __name__ == '__main__':
m = input('请输入月份: ')
y = input('请输入年份: ')
now_date = datetime.datetime.now()
# 如果年份和月份都为空则输出现在, 如果只有月份空着则输出1-12月
if m == '':
if y == '':
m_list = [now_date.month]
y = now_date.year
else:
m_list = range(1, 13)
else:
m_list = [int(m)]
for m in m_list:
cal_main(m, y=now_date.year)
shift + :wq
边栏推荐
- [higherhrnet] higherhrnet detailed heat map regression code of higherhrnet
- Use of JSON extractor originals in JMeter
- Review of the losers in the postgraduate entrance examination
- [牛客网刷题 Day5] JZ77 按之字形顺序打印二叉树
- Programming features of ISP, IAP, ICP, JTAG and SWD
- table宽度比tbody宽度大4px
- Study summary of postgraduate entrance examination in October
- 基于gis三维可视化技术的智慧城市建设
- Easyexcel read write simple to use
- Programming features of ISP, IAP, ICP, JTAG and SWD
猜你喜欢

Embedded background - chip

The request object parses the request body and request header parameters

Prototype object in ES6

1321:【例6.3】删数问题(Noip1994)

JMeter loop controller and CSV data file settings are used together

成为优秀的TS体操高手 之 TS 类型体操前置知识储备

一文讲解单片机、ARM、MUC、DSP、FPGA、嵌入式错综复杂的关系

Remote meter reading, switching on and off operation command

Encrypt and decrypt stored procedures (SQL 2008/sql 2012)

Fiddler simulates the interface test
随机推荐
fiddler-AutoResponder
ORM model -- creation and query of data records
A small problem of bit field and symbol expansion
[email protected] can help us get the log object quickly
Pdf document signature Guide
Weekly recommended short videos: what are the functions of L2 that we often use in daily life?
ORM model -- associated fields, abstract model classes
【acwing】786. Number k
Postman interface test II
STM32产品介绍
2022.7.3DAY595
Study summary of postgraduate entrance examination in July
Study summary of postgraduate entrance examination in August
Experience sharing of software designers preparing for exams
Embedded background - chip
SolidWorks工程图中添加中心线和中心符号线的办法
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
Review of the losers in the postgraduate entrance examination
学习记录——高精度加法和乘法
Programming features of ISP, IAP, ICP, JTAG and SWD