" AttributeError:' list'对象没有属性' get' "

时间:2018-03-29 04:23:48

标签: python python-3.x

这里我试图将英文日期转换为相当的尼泊尔日期。 当我运行代码时,我得到" AttributeError:' list'对象没有属性' get' "作为错误。 以下是我的代码。

from datetime import date
import datetime 
import time
import calendar

engMonth=int(input('Enter birth month in A.D.'))
engDate=int(input('Enter birth date in A.D.'))
engYear=int(input('Enter birth year in A.D.'))

下面是没有列表。每年每个月的有效范围内的天数

尼泊尔年月份列表,其中,2000年,2001年,2002年等是尼泊尔年份,30,32,31等是以月为单位的总天数

nepaliMonths = [
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],  #2000
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],  #2001
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
            [ 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
            [ 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
            [ 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],
            [ 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],  #2071
            [ 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],  #2072
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31 ],  #2073
            [ 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
            [ 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30 ],
            [ 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 31, 32, 31, 32, 30, 31, 30, 30, 29, 30, 30, 30 ],
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30 ],
            [ 30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30 ],
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30 ],  #2090
            [ 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30 ],
            [ 30, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 30, 30 ],
            [ 30, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30 ],
            [ 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30 ],
            [ 31, 31, 32, 31, 31, 31, 29, 30, 29, 30, 29, 31 ],
            [ 31, 31, 32, 31, 31, 31, 30, 29, 29, 30, 30, 30 ]   #2099
        ]


#define the least possible English date 1944/01/01 Saturday.

startingEngYear = 1944
startingEngMonth = 1
startingEngDay = 1
dayOfWeek = calendar.SATURDAY  #1944 is a saturday


#Let's define the equivalent Nepali date 2000/09/17.

startingNepYear = 2000
startingNepMonth = 9
startingNepday = 17


# Let's calculate the number of days between the two English dates as follows:

date0=date(engYear,engMonth,engDate)
date1=date(startingEngYear,startingEngMonth,startingEngDay)
delta=date0 - date1
# print (delta.days)


#initialize required nepali date variables with starting  nepali date
nepYear = startingNepYear
nepMonth = startingNepMonth
nepDay = startingNepday

错误出现在这段代码中。

# decreament delta.days until its value becomes zero
while delta.days != 0:

    # getting total number of days in month nepMonth in a year nepYear
    daysInMonth = nepaliMonths.get(nepYear)[nepMonth]
    nepDay+=1 # incrementing nepali day

    if(nepDay > daysInMonth):
        nepMonth+=1
        nepDay = 1

    if(nepMonth > 12):
        nepYear+=1
        nepMonth = 1

    dayOfWeek+=1 #counting the days in terms of 7 days
    if(dayOfWeek > 7):
        dayOfWeek = 1

    delta.days-=1   

帮助

2 个答案:

答案 0 :(得分:1)

awk是一个列表,实际上,列表没有nepaliMonths方法。

也许你的意思是.get()

答案 1 :(得分:1)

为什么不使用Python dictionary

使用字典你可以有这样的东西:

nepaliMonths = { 2000: [ 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 ],
                 2001: [ 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 ],

                 # Fill with rest of data . . .

                 2099: [ 31, 31, 32, 31, 31, 31, 30, 29, 29, 30, 30, 30 ] }

然后,要索引数据集,只需使用nepaliMonths[year][month - 1]

即可

示例:nepaliMonths[2000][0] == 30nepaliMonths[2000][11] == 31

另一种方法

根据您当前的实施,您只需使用nepaliMonths[year - 2000][month - 1]

示例:nepaliMonths[0][0] == 30nepaliMonths[0][11] == 31