2013-10-31 39 views
0
def get_date(date): 
month = date[4:7] 
if month == "01": 
    month_string = "January" 
elif month == "02": 
    month_string = "February" 
elif month == "03": 
    month_string = "March" 
elif month == "04": 
    month_string = "April" 
elif month == "05": 
    month_string = "May" 
elif month == "06": 
    month_string = "June" 
elif month == "07": 
    month_string = "July" 
elif month == "08": 
    month_string = "August" 
elif month == "09": 
    month_string = "September" 
elif month == "10": 
    month_string = "October" 
elif month == "11": 
    month_string = "November" 
elif month == "12": 
    month_string = "December" 
return month_string 

變量'date'是一個輸入字符串,格式爲yyyy/mm/dd。爲什麼我的本地變量在條件分配時被說成是未分配的?

此功能測試以查看輸入yyyy/mm/dd中的月份是否爲這些數字中的一個,並將字符串分配給該數字值。這個決策結構不應該爲month_string賦值嗎?我不明白爲什麼它不是。

+0

縮進在我的蟒蛇屏幕上是正確的,他們沒有跨越這裏,對不起! – Artifex

回答

1

使此:

def get_date(date): 
    month = date[5:7] 
    month_string = None 
    ... 

date[5:7]mm部分,而date[4:7]/mm

此外,month_string = None處理一個月無效的情況下。

1

您的本地變量在被分配之前被引用的原因是因爲month_string未在每種情況下分配。您指定的最後一種情況是elif聲明。由於Python不知道你的輸入值只會是那幾個月,所以它不能評估並且完全確定month_stringreturn語句之前被正確地賦值。

您可以在您的第一個if聲明前面寫上month_string = None

def get_date(date): 
month = date[5:7] 
month_string = None 
if month == "01": 
    month_string = "January" 
... 
相關問題