ИИ без LLM: создаем свою модель ИИ Урок 17 из 25
Урок 17. Ищем по двум ключам
В библиотеке фамилия автора без названия может указать на несколько книг. Нашему каталогу тоже нужны два ключа: кружок и вид сведений. Урок 15 уже получал такую пару из короткого вопроса.
Текст переведён с помощью ИИ.
Зачем это нужно
В библиотеке фамилия автора без названия может указать на несколько книг. Нашему каталогу тоже нужны два ключа: кружок и вид сведений. Урок 15 уже получал такую пару из короткого вопроса.
Перед запуском
Скопируйте facts.json из шага 16 в новую папку. Программа принимает ключи отдельно: это удобно, чтобы сначала проверить сам поиск. and означает, что оба сравнения должны быть верны. matches — список найденных карточек.
[
{"club": "шахмат", "kind": "уақыт", "value": "бейсенбі, 15:00"},
{"club": "шахмат", "kind": "орын", "value": "203-бөлме"}
]
Из корня проекта перейдите в папку шага и запустите программу:
cd course/kazakh-ai/step-17
python3 search.py
В Windows вместо последней команды выполните py search.py.
import json
with open("facts.json", encoding="utf-8") as file:
facts = json.load(file)
club = input("Үйірме: ").lower()
kind = input("Мәлімет түрі: ").lower()
matches = []
for fact in facts:
if fact["club"] == club and fact["kind"] == kind:
matches.append(fact)
if len(matches) == 1:
print("Табылды:", matches[0]["value"])
elif len(matches) == 0:
print("білмеймін: дерек жоқ")
else:
print("тоқта: бірнеше дерек табылды")
Что делает программа
Цикл просматривает все карточки. Если совпали и кружок, и вид сведений, карточка попадает в matches. При одном совпадении [0] безопасен; при нуле говорим, что записи нет; при нескольких останавливаемся, потому что пока не знаем, какая верна. .lower() приводит ввод к маленьким буквам, но не исправляет опечатки и лишние пробелы.
Опорная карта
Кружок + вид → просмотр каталога → 0: нет записи; 1: значение; 2 и более: остановка.
Вспомните и проверьте
Предскажите вывод для шахмат и уақыт, затем для сурет и орын. Подсказка: сравниваются два поля одновременно. Эталон: Табылды: бейсенбі, 15:00; затем білмеймін: дерек жоқ. Добавьте дубликат времени шахмат и убедитесь, что программа останавливается. Ошибка: считать первое совпадение достаточным, не просмотрев каталог целиком.
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.