#python #local-variables
Вопрос:
У меня есть этот код, в котором встречается ошибка: локальная переменная «транспортное средство», на которую ссылаются перед назначением. Но когда я просматриваю свой код ниже, я назначил список переменной транспортного средства в if
elif
операторе , до того, как «транспортное средство» будет добавлено в список транспортных средств. Что здесь могло пойти не так?
def populate_vehicles(self, vehicle_file):
empty_str = ''
vehicle_str = vehicle_file.readline()
vehicle_info = vehicle_str.rstrip().split(',')
file_header_found = vehicle_info
vehicle_str = vehicle_file.readline()
while vehicle_str != empty_str:
vehicle_info = vehicle_str.rstrip().split(',')
if vehicle_str == '#CARS#' or vehicle_str == '#VANS#' or vehicle_str == '#TRUCKS#':
file_header_found = vehicle_str
else:
if file_header_found == '#CARS#':
vehicle = Car(*vehicle_info)
elif file_header_found == '#VANS#':
vehicle = Van(*vehicle_info)
elif file_header_found == '#TRUCKS#':
vehicle = Truck(*vehicle_info)
self.vehicles.add_vehicle(vehicle)
vehicle_str = vehicle_file.readline()
Комментарии:
1. Возможно, ни одно из
if...elif
утверждений не оцениваетсяTrue
, и тогда вы делаетеself.vehicles.add_vehicle(vehicle)
то, на что ссылаетесь. Попробуйтеprint(file_header_found)
и проверьте, каков результат2.
else:
Вif
elif
цепочке / нет. Еслиheader_found
он не соответствует ни одной из трех строк, с которыми вы его сравниваете, тоvehicle
будет неопределенным, как и сказал вам Python. Итак, добавьтеelse:
и назначьте что-тоvehicle
(или, в качестве альтернативы, выдайте ошибку).
Ответ №1:
Если вы войдете в если, транспортное средство не будет установлено.
Когда вы ссылаетесь на транспортное средство во 2-й и последней строке в этом случае, оно не будет создано.