你的代码存在一些问题:
1. `is_on_month(self, min, max)`方法中的循环逻辑有误。如果`min`和`max`都在`month`中,那么会立即返回True并附带一条提示信息,这会导致只检查了第一个`month`,而不是遍历所有的`month`。应该将返回True的语句移动到循环结束后。
2. `check_year_month()`方法中多次调用了`self.is_on_month(self.min, self.max)`,并没有正确处理返回的值。第二次调用`is_on_month()`的返回值被忽略了,并且这个方法也没有给`self.is_on_flag`和`self.is_on_message`赋值,导致它们在返回结果中被引用时可能会出错。
以下是修正后的代码示例:
class GetFile:
def __init__(self):
with open("year_month.json", mode="r", encoding="utf-8") as f:
u_text = f.read()
self.year_month = json.loads(u_text)
def is_on_month(self, min, max):
for month in self.year_month:
if min and max not in month:
continue
else:
return True, "数据库里包含有表中的月份,请确认后再载入数据"
return False, "数据库里没有表中月份的数据,请放心载入!"
def check_year_month(self):
self.filemessage = filemessage
self.file, self.min, self.max, self.sum = self.filemessage.get_new_file_message()
self.is_on_flag, self.is_on_message = self.is_on_month(self.min, self.max)
if self.min == self.max:
return True, "月份无误。", self.is_on_flag, self.is_on_message, self.sum
else:
_, message = self.is_on_month(self.min, self.max)
return False, "文件中存在多个月份的信息,建议复查一下再载入。", self.is_on_flag, message, self.sum
现在,`is_on_month()`方法会正确地遍历所有的`month`,并返回相应的结果。`check_year_month()`方法也会正确处理`is_on_month()`方法的返回值,并返回修复后的结果。
希望能帮到你!如果还有其他问题,请随时向我提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |