正在尝试在python中打印日历

  • 本文关键字:打印 日历 python python
  • 更新时间 :
  • 英文 :


我正在尝试打印给定年份的日历,并尝试了以下代码。这里的日期和一周的开始日期不正确。在这里,我声明了一个类Calender,并使用类变量调用print month。我无法正确打印输出,并且图案的对齐不正确。

尝试的代码:

**from datetime import date
class Calender():
month_name=["January","February","March","April","May","June","July","August","September","October","November","December"]
Year =2013
month_days= [31,28,31,30,31,30,31,31,30,31,30,31]
day = [0,1,2,3,4,5,6]
def day_week(self,Year,month):
d = 1
# month_days= [31,28,31,30,31,30,31,31,30,31,30,31]
#day = [0,1,2,3,4,5,6]
#print(Calender.month_name[2])
if (Year % 4 == 0 and (Year % 100 != 0 or Year % 400 == 0)) :
self.month_days[1] = 29
else:
self.month_days[1]= 28
if (Year < 1900 or month < 0 or month > 12 or d < 1 or d > self.month_days[month - 1]):
print("This is an invalid date.n")
exit(1)

for i in range(1990,Year):
if (i % 4 == 0 and (i % 100 != 0 or i % 400 == 0)):
d = d + 366
#print(d)
else:
d = d + 365
#print(d)
M = d
print(M)
for i in range(1,month+1):
D = self.month_days[i-1]
M = M + D
r = M % 7
return self.day[r] 

def print_month(self,Year,month):
d =1
print("nt",Calender.month_name[month],"-",Year)
#print("33[0;40mn")
x = Calender.day_week(self,Year,month+1)
days = Calender().month_days[month]
today = str(date.today())
da_te = today[8:]
mon = today[6:7]
print(mon,month+1,da_te,x)
print("nSun  Mon  Tue  Wed  Thu  Fri  Sat")
for i in range(1,x+1):
print(i*" ",end=" ")
for i in range(1,days+1):
if (i == da_te):
if (month+1 == mon ):
print(" 33[1;33m",i)

continue
if((i+d+x-1)% 7 == 0):
print(i,end="n")
else:
print(i,end=" ")





if __name__ =="__main__":
Year = int(input("Enter the Year: "))
c = Calender()
for j in range(0,12):
c.print_month(Year,j)
print("n")**

这是我得到的输出,

输出:

~/Python-3$ python sample.py
Enter the Year: 2021
March - 2021
11324
3 3 22 4
Sun  Mon  Tue  Wed  Thu  Fri  Sat
1   2   3
4   5   6   7   8   9   10
11   12   13   14   15   16   17
18   19   20   21   22   23   24
25   26   27   28   29   30   31

首先,您缺少一个"此行:print("ntCalender.month_name[month],"-",Year)

这应该是print(f"{self.month_name[month]} - {Year}")

3号线改为

self.month_name = [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
]

其中CCD_ 3是必要的,其余的只是使代码更可读。

最新更新