当前位置:网站首页>【作业】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
边栏推荐
- [email protected]能帮助我们快速拿到日志对象
- ORM -- query type, association query
- 移动端通过设置rem使页面内容及字体大小自动调整
- Guid主键
- High number_ Chapter 1 space analytic geometry and vector algebra_ Quantity product of vectors
- php \n 换行无法输出
- Kotlin实现微信界面切换(Fragment练习)
- AHB bus in stm32_ Apb2 bus_ Apb1 bus what are these
- ORM -- logical relation and & or; Sort operation, update record operation, delete record operation
- table宽度比tbody宽度大4px
猜你喜欢

mysql插入数据创建触发器填充uuid字段值

Review of the losers in the postgraduate entrance examination

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

Wallys/IPQ6010 (IPQ6018 FAMILY) EMBEDDED BOARD WITH ON-BOARD WIFI DUAL BAND DUAL CONCURRENT

基于gis三维可视化技术的智慧城市建设

1324:【例6.6】整数区间

每周推荐短视频:L2级有哪些我们日常中经常会用到的功能?

对word2vec的一些浅层理解

Appx代码签名指南

ORM -- query type, association query
随机推荐
Some properties of leetcode139 Yang Hui triangle
P1031 [NOIP2002 提高组] 均分纸牌
[email protected] can help us get the log object quickly
求方程ax^2+bx+c=0的根(C语言)
关于hzero-resource报错(groovy.lang.MissingPropertyException: No such property: weight for class)
LeetCode 练习——113. 路径总和 II
P1223 排队接水/1319:【例6.1】排队接水
Talking about the return format in the log, encapsulation format handling, exception handling
根据设备信息进行页面跳转至移动端页面或者PC端页面
MCU is the most popular science (ten thousand words summary, worth collecting)
Study summary of postgraduate entrance examination in September
2022.7.5DAY597
Advanced function learning in ES6
ORM -- logical relation and & or; Sort operation, update record operation, delete record operation
【STM32】STM32烧录程序后SWD无法识别器件的问题解决方法
A small problem of bit field and symbol expansion
Guid主键
Differences between MCU and MPU
When there are pointer variable members in the custom type, the return value and parameters of the assignment operator overload must be reference types
嵌入式背景知识-芯片