Поиск по списку автомобителей
необходимо сделать поиск по списку автомобилей. Чтобы он находил как совпадение большой и маленькой буквы.
Audi A4,audi A5,AUDI a6 A7,BMW X5,VOLVO x60, audi a5
Тоесть из этого списка от должен найти все машины марки Ауди и выписать их. Сделала такой код, но он не работает, где ошибка?
def search_by_make(all_cars: str) -> list:
cars = all_cars.split(',')
make = []
for car in cars:
if car.lower() in all_cars.lower():
return make
elif car.upper() in all_cars.upper():
return make
верхняя часть спасибо, решена. По её принципу была сделана другая часть, но надо найти полное совпадение в данном коде:
def search_by_models(all_cars: str, the_models: str) -> list:
cars = all_cars.split(',')
models = []
for model in cars:
if the_models.lower() in model.lower():
models.append(model)
return models
print(search_by_models("Audi A4,Audi a4 2021,Audi A40", "A4"))
Код находит даже по частичному совпадению, что является ошибкой.
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Из основных ошибок:
- В функцию не передается параметр, что именно искать (Audi) и не ищется.
- Внутри цикла ищутся все марки автомобилей в начальном тексте
all_cars - Не пополняется список
make - Осуществляется выход из функции после первого же совпадения, всегда возвращая пустой список
make(см. п.2)
Остальные ошибки можно найти сравнив код:
def search_by_make(all_cars: str, the_car: str) -> list:
cars = all_cars.split(',')
make = []
for car in cars:
if the_car.lower() in car.lower():
make.append(car) # пополняем список
return make
all_cars = 'Audi A4,audi A5,AUDI a6 A7,BMW X5,VOLVO x60, audi a5'
print(search_by_make(all_cars, 'AuDi'))
['Audi A4', 'audi A5', 'AUDI a6 A7', ' audi a5']
Можно написать код короче c тем же результатом, например:
all_cars = 'Audi A4,audi A5,AUDI a6 A7,BMW X5,VOLVO x60, audi a5'
print(list(filter(lambda x: 'audi' in x.lower(), all_cars.split(','))))