2016-07-25 72 views
1

我無法解決這個問題,並且需要幫助來理解爲什麼在下面的代碼塊中返回時它只輸出date_list中的第一個列表,而不是與print語句相同?代碼塊不會返回所有值嗎?

date_list = [['2015-11-11', '2015-12-02'], ['2016-04-03', '2016-04-15'], ['2016-05-10', '2016-05-22']] 

def formatdates(): 
    for i in range(len(date_list)): 
     start_date = date_list[i][0] 
     end_date = date_list[i][1] 
     s = datetime.strptime(start_date, "%Y-%m-%d") 
     e = datetime.strptime(end_date, "%Y-%m-%d") 
     formatted_s = s.strftime("%e-%b-%Y") 
     formatted_e = e.strftime("%e-%b-%Y") 
     i += 1 
     print("{} to {}".format(formatted_s, formatted_e)) # Output 1 below 
     return print("{} to {}".format(formatted_s, formatted_e)) # Output 2 below 
print(formatdates()) 

想要的結果是在函數中返回時,根據print語句輸出格式化日期列表? 如何將所有行作爲打印列表返回?


輸出1:

11-NOV-2015 2-DEC-2015

3-APR-2016至15-APR-2016

10五月 - 2016年22月 - 2016

輸出2:

11-NOV-2015 2-DEC-2015

回答

1
date_list = [['2015-11-11', '2015-12-02'], ['2016-04-03', '2016-04-15'], ['2016-05-10', '2016-05-22']] 

def formatdates(): 
    ret_date = [] 
    for d in date_list: 
     start_date = d[0] 
     end_date = d[1] 
     s = datetime.strptime(start_date, "%Y-%m-%d") 
     e = datetime.strptime(end_date, "%Y-%m-%d") 
     formatted_s = s.strftime("%e-%b-%Y") 
     formatted_e = e.strftime("%e-%b-%Y") 
     # print("{} to {}".format(formatted_s, formatted_e)) 
     ret_date.append("{} to {}".format(formatted_s, formatted_e)) 
    return ret_date 
print(formatdates()) 

UPDATEreturn是循環內,並且使功能第一步驟之後退出。

+1

這是值得添加一個解釋,所以OP實際上知道他們的代碼有什麼問題,並可以從下次的錯誤中學習。 – DeepSpace

+0

@valentin,謝謝我明白我現在做錯了什麼:) – MattE

+0

@DeepSpace,對於遇到同樣問題的新用戶會有好處。 –

相關問題