Shanraq.org Shanraq.org
IT

ИИ без 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)

Пока нет комментариев. Будьте первым.