当前位置:网站首页>【作业】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
边栏推荐
- CONDA creates virtual environment offline
- P2788 数学1(math1)- 加减算式
- 成为优秀的TS体操高手 之 TS 类型体操前置知识储备
- Review of the losers in the postgraduate entrance examination
- When there are pointer variable members in the custom type, the return value and parameters of the assignment operator overload must be reference types
- ORM -- grouping query, aggregation query, query set queryset object properties
- 1323:【例6.5】活动选择
- 对存储过程进行加密和解密(SQL 2008/SQL 2012)
- SQLyog数据库怎么取消自动保存更改
- 柏拉图和他的三个弟子的故事:如何寻找幸福?如何寻找理想伴侣?
猜你喜欢
Review of the losers in the postgraduate entrance examination
【STM32】STM32烧录程序后SWD无法识别器件的问题解决方法
Socket通信原理和实践
This article explains the complex relationship between MCU, arm, muc, DSP, FPGA and embedded system
【acwing】786. Number k
Several schemes of building hardware communication technology of Internet of things
Guide de signature du Code Appx
[second on] [jeecgboot] modify paging parameters
浅谈日志中的返回格式封装格式处理,异常处理
JMeter installation
随机推荐
C logging method
Methods of adding centerlines and centerlines in SolidWorks drawings
基于gis三维可视化技术的智慧城市建设
[牛客网刷题 Day6] JZ27 二叉树的镜像
Mongodb creates an implicit database as an exercise
Multisim--软件相关使用技巧
The method of word automatically generating directory
Guid主键
MCU与MPU的区别
[牛客网刷题 Day5] JZ77 按之字形顺序打印二叉树
Postman interface test IV
Encrypt and decrypt stored procedures (SQL 2008/sql 2012)
mysql插入数据创建触发器填充uuid字段值
对存储过程进行加密和解密(SQL 2008/SQL 2012)
Google colab loads Google drive (Google drive is used in Google colab)
Inno Setup 打包及签名指南
ISP、IAP、ICP、JTAG、SWD的编程特点
Study summary of postgraduate entrance examination in November
Inno setup packaging and signing Guide
[second on] [jeecgboot] modify paging parameters