假设我的句点为NOV-2016
和MAR-2018
,我需要打印所有句点,例如(NOV-2016, DEC-2016, JAN-2017
至MAR-2018)
。可以做些什么来获得理想的结果。现在我做了这个,但我没有得到理想的结果:
start_period = 'NOV-2017'
end_period = 'JUN-2019'
array = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
year1 = int(start_period.split('-')[1])
year2 = int(end_period.split('-')[1])
diff = year2-year1
month_start = start_period.split('-')[0]
month_end = end_period.split('-')[0]
index1 = array.index(month_start)
index2 = array.index(month_end)
while diff>0:
while(diff>=1 and (index2+1) != index1):
if(index1==12):
index1 = 0
print(array[index1])
index1+=1
diff-=1
if diff==0:
break
答案 0 :(得分:0)
如果你每年迭代一次,我认为处理你的问题会更容易。在每年年底将月份重置为 JAN 。如果您在最后一年,请检查每年,然后设置适当的结束月份。
以下是一个例子:
start_period = 'NOV-2017'
end_period = 'JUN-2019'
months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
def printTimePeriods(start, end):
start_month, start_year = start.split("-")
end_month, end_year = end.split("-")
# Cast year to int
start_year, end_year = int(start_year), int(end_year)
# For every year
for year in range(start_year, end_year + 1):
month_index = 12
# Check if we are in the last year
if year == end_year:
month_index = months.index(end_month) + 1
# For every month print the period
for month in range(months.index(start_month), month_index):
print months[month], year
# New year
start_month = "JAN"
printTimePeriods(start_period, end_period)