正在尝试用python打印日历

2024-04-26 11:08:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试打印给定年份的日历,并尝试了以下代码。在这里,一周的天数和开始日期不正确。这里我声明一个类日历,并使用类变量调用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
 

Tags: ornameinselffortodaydateif
1条回答
网友
1楼 · 发布于 2024-04-26 11:08:32

首先,这一行中缺少一个“print("\n\tCalender.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"
]

其中self.是必需的,其余的只是使代码更具可读性

相关问题 更多 >