我一直在研究这个程序已有一段时间了。这是解决一个错误导致新错误的原因之一。这是我最新的树桩。我有许多像这样的代码句子,只有条件变化,但第二行仍然存在。
if year % 400 == 0:
nyear = "leapyear"
并且最后,我有这个代码,确保2月29日只存在为leapyears。这也是包含错误的代码的一部分。
elif month == 2 and nyear == "leapyear":
if day > 29:
date = "invalid"
导致最后一段代码,它只打印有效日期:
if date != "invalid":
print(day, months[month], year)
break
else:
continue
我没有发布我的整个代码,因为它很长,但我仍然可以添加它,如果它会使问题更容易理解。这是我不断得到的错误,我不知道如何纠正它。
Traceback (most recent call last):
File "C:\Python33\assgn21.py", line 103, in <module>
main()
File "C:\Python33\assgn21.py", line 82, in main
elif month == 2 and nyear != "leapyear":
UnboundLocalError: local variable 'nyear' referenced before assignment
答案 0 :(得分:3)
如果你只有这个:
if year % 400 == 0:
nyear = "leapyear"
...
如果条件不满足,你永远不会设置nyear
。相反,将它设为一个标志并在两种情况下都设置它:
if year % 400:
leapyear = False
else:
leapyear = True
现在你可以简单地拥有:
elif month == 2 and leapyear:
同样,您应该只有date_valid = False
而不是date = "invalid"
;它会让你的代码更清晰。