y = int(input("请输入年份:"))
m = int(input("输入月份:"))
day = 0
def isleepyear(year):
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
return 1
else:
return 0
for i in range(1900, y):
if isleepyear(i):
day += 366
else:
day += 365
mday = 0
a = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
b = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if isleepyear(i):
for i in range(m):
mday += a[i]
else:
for i in range(m):
mday += b[i]
tday = day + mday
fwd = (tday + 1) % 7
count = 0
if m != 2:
count = a[m]
else:
if isleepyear(y):
count = 29
else:
count = 28
now = 1
print("---------万年历---------")
print(f"---------{y}年{m}月---------")
print("星期日 星期一 星期二 星期三 星期四 星期五 星期六")
while True:
for j in range(7):
if fwd != 0:
print(' ',end="")
fwd-=1
else:
print(f"{now} ",end="")
if now < 10:
print(' ',end="")
now+=1
if now == count+1:
break
print("")
if now == count+1:
break
用户输入年份和月份
y = int(input("请输入年份:"))
m = int(input("输入月份:"))
定义变量day,并判断该年份是否是闰年
day = 0
def isleepyear(year):
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
return 1
else:
return 0
计算年份天数
for i in range(1900, y):
if isleepyear(i):
day += 366
else:
day += 365
计算月份天数
mday = 0
a = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 闰年每月天数
b = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 平年每月天数
if isleepyear(y):
for i in range(m):
mday += a[i]
else:
for i in range(m):
mday += b[i]
通过年份天数和月份天数计算总天数,并计算出该月第一天是星期几
tday = day + mday
fwd = (tday + 1) % 7
定义变量count,计算给定年月份的总天数
count = 0
if m != 2:
count = a[m]
else:
if isleepyear(y):
count = 29
else:
count = 28
定义变量now,并输出万年历表格
now = 1
print("---------万年历---------")
print(f"---------{y}年{m}月---------")
print("星期日 星期一 星期二 星期三 星期四 星期五 星期六")
while True:
for j in range(7):
if fwd != 0:
print(' ',end="") # 输出空格
fwd-=1
else:
print(f"{now} ",end="") # 输出日期
if now < 10:
print(' ',end="")
now+=1
if now == count+1: # 若日期数超过月份天数,则结束循环
break
print("") # 换行
if now == count+1:
break
不知道你这个问题是否已经解决, 如果还没有解决的话:链表是一种物理存储单元上非连续、非顺序的线性表存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相比数组,链表是一种稍微复杂一点的数据结构。从底层的存储结构上来看一看他们的区别:从图中我们看到,数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个 100MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB,仍然会申请失败。
而链表恰恰相反,它并不需要一块连续的内存空间,而是通过“指针”将一组零散的内存块串联起来使用,所以如果我们申请的是 100MB 大小的链表是不会有问题的。