如何在python3.6中以monthwise矩阵格式打印日历?

2024-09-26 17:44:46 发布

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

我用Python创建了印度国历函数,如下所示:

import calendar
import datetime

'Days in Tamil names. first day start from 0-Monday and 6- sunday. similar to ISO format'
tamil_day = ('திங்கள்','செவ்வாய்','புதன்','வியாழன்','வெள்ளி','சனி','ஞாயிறு')

'months in Tamil names. first month start from 0-Chithirai and 11-panguni. similar to ISO format'
tamil_months = ('சித்திரை','வைகாசி','ஆணி','ஆடி','ஆவணி','புரட்டாசி','ஐப்பசி','கார்த்திகை','மார்கழி','தை','மாசி','பங்குனி')
'''reference date for Indian Saka Era
Saka Era 1876 is equal to 1954-55AD or Saka 1875-76 is equal to 1954
March 22,1954 is Chithirai 1,1876 Saka as Indian new year
'''
saka_year_AD_reference = datetime.date(1954,3,22)
saka_year_reference = 1876
saka_year_offset = 78
tamil_first_day_reference = calendar.firstweekday()
tamil_first_month_reference = tamil_months[0]
'''
number of days in each tamil month
normal year- chithirai-30days;
leap year- chithirai-31 days
'''
days_in_month_normal_year = (30,31,31,31,31,31,30,30,30,30,30,30)
days_in_month_leap_year = (31,31,31,31,31,31,30,30,30,30,30,30)

'Enter the year to print the calendar'
year = 1876

'find the year is leap year or not'
def tamil_leap_year(year):
    leap=year+saka_year_offset
    return calendar.isleap(leap)

'find the first day in given year'
def tamil_first_day_in_year(year):
    offset_compensation = year+saka_year_offset

    if tamil_leap_year(year):
        return calendar.weekday(offset_compensation,3,21)
    else:
        return calendar.weekday(offset_compensation,3,22)

def print_year(year):
    if tamil_leap_year(year)!=True:
        day_count = tamil_first_day_in_year(year)

        for i in range(12):
            print('\n','{:*^16}'.format(tamil_months[i]),'  \n','_______________')

            for i in range(1,(1+days_in_month_normal_year[i])):
                print('{:<2}'.format(i),"|",'{: <2}'.format(tamil_day[day_count]),'\n',end='')
                day_count = day_count+1

                if i<=31:
                    if day_count==7:
                        day_count = 0
                    continue
                else:
                    break
    else:
        day_count = tamil_first_day_in_year(year)

        for i in range(12):
            print(tamil_months[i],'|')

            for i in range(1,(1+days_in_month_leap_year[i])):
                print(i,"|",tamil_day[day_count])
                day_count = day_count+1

                if i<=31:
                    if day_count==7:
                        day_count = 0
                    continue
                else:
                    break

print(print_year(year))

我想打印输出的月份和类似的公历类似如下

^{pr2}$

不幸的是,我是Python的初学者,我不知道如何创建一个循环来创建month表的框架。有谁能帮我解决这个问题吗?在


Tags: toinformatifcountdaysyearcalendar

热门问题