当前位置:网站首页>【作业】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
边栏推荐
猜你喜欢
ArcGIS operation: converting DWG data to SHP data
Adb 实用命令(网络包、日志、调优相关)
[ORM framework]
柏拉图和他的三个弟子的故事:如何寻找幸福?如何寻找理想伴侣?
Encrypt and decrypt stored procedures (SQL 2008/sql 2012)
Inno setup packaging and signing Guide
ISP、IAP、ICP、JTAG、SWD的编程特点
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
每周推荐短视频:L2级有哪些我们日常中经常会用到的功能?
JMeter loop controller and CSV data file settings are used together
随机推荐
BigDecimal数值比较
Serial communication relay Modbus communication host computer debugging software tool project development case
Socket通信原理和实践
EasyExcel读取写入简单使用
ISP、IAP、ICP、JTAG、SWD的编程特点
Postman interface test VI
C logging method
ArcGIS operation: converting DWG data to SHP data
Programming features of ISP, IAP, ICP, JTAG and SWD
Study summary of postgraduate entrance examination in August
Google colab loads Google drive (Google drive is used in Google colab)
High number_ Chapter 1 space analytic geometry and vector algebra_ Quantity product of vectors
2022.7.6DAY598
STM32中AHB总线_APB2总线_APB1总线这些是什么
Use the fetch statement to obtain the repetition of the last row of cursor data
5个chrome简单实用的日常开发功能详解,赶快解锁让你提升更多效率!
A small problem of bit field and symbol expansion
ORM -- grouping query, aggregation query, query set queryset object properties
关于hzero-resource报错(groovy.lang.MissingPropertyException: No such property: weight for class)
[email protected] can help us get the log object quickly