这里我试图将英文日期转换为相当的尼泊尔日期。 当我运行代码时,我得到" 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
帮助
答案 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] == 30
和nepaliMonths[2000][11] == 31
另一种方法:
根据您当前的实施,您只需使用nepaliMonths[year - 2000][month - 1]
示例:nepaliMonths[0][0] == 30
和nepaliMonths[0][11] == 31