我正在尝试打印给定年份的日历,并尝试了以下代码。在这里,一周的天数和开始日期不正确。这里我声明一个类日历,并使用类变量调用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("\n\t",Calender.month_name[month],"-",Year)
#print("\033[0;40m\n")
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(" \033[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("\n\tCalender.month_name[month],"-",Year)
”这应该是
print(f"{self.month_name[month]} - {Year}")
3号线改为
其中
self.
是必需的,其余的只是使代码更具可读性相关问题 更多 >
编程相关推荐