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

变量“日期”是格式为 yyyy/mm/dd 的输入字符串。

此函数测试输入 yyyy/mm/dd 中的月份是否是这些数字之一,并为该数字值分配一个字符串。这个决策结构不应该给month_string赋值吗?我不明白为什么不是。

4

2 回答 2

1

做这个:

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

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

此外,month_string = None处理月份无效的情况。

于 2013-10-31T03:40:13.097 回答
1

您的局部变量在分配之前被引用的原因是因为month_string不是在每种情况下都分配。您分配它的最后一个案例是一个elif声明。由于 Python 不知道您的输入值只会是那几个月,因此它无法评估并绝对确定month_string在语句之前正确分配了return

你可以在你的第一个陈述month_string = None之前写。if

def get_date(date):
month = date[5:7]
month_string = None
if month == "01":
    month_string = "January"
...
于 2013-10-31T03:42:27.657 回答