Shanraq.org Shanraq.org
IT

Үлкен тілдік үлгісіз ЖИ: қазақша мәтін үлгісі 13-сабақ (барлығы 20)

13-сабақ. Сұрақтың нысанын табамыз

Кітапханадан «Шахмат үйірмесі қашан ашылады?» деп сұрасаңыз, қызметкер әуелі қай үйірме туралы екенін түсінуі керек. Біздің ойдан алынған оқу клубымызда екі сабақ атауы бар: Шахмат және Сурет. Сұрақта аталған нақты нәрсені сұрақ нысаны дейміз. Бағдарламада бұл атау кейін жазбаны іздеуге көмектеседі.

Мәтін ИИ көмегімен аударылды.

Бұл не үшін керек?

Кітапханадан «Шахмат үйірмесі қашан ашылады?» деп сұрасаңыз, қызметкер әуелі қай үйірме туралы екенін түсінуі керек. Біздің ойдан алынған оқу клубымызда екі сабақ атауы бар: Шахмат және Сурет. Сұрақта аталған нақты нәрсені сұрақ нысаны дейміз. Бағдарламада бұл атау кейін жазбаны іздеуге көмектеседі.

Әуелі толық қадам

Әзірше қосымшасыз атауларды ғана қабылдаймыз. 11-сабақта қосымшаларды қалай тексеруге болатынын көрдік, бірақ үйірме атаулары үшін әлі ереже жазған жоқпыз. Бір сұрақта екі атау болса, екеуін де жоғалтпау үшін табылған атаулар тізімін құрамыз.

text сұрақты кіші әріппен, clean сол сұрақты ? пен үтірсіз сақтайды; words одан шыққан сөздер тізімі болады. Кодқа дейін екі жаңа әрекетті білейік: for тізімдегі мәндерді кезекпен қарайды, append табылған мәнді басқа тізімнің соңына қосады. Шегініс қай жолдардың қайталанатынын көрсетеді.

UTF-8 жазылымымен entities.py файлын жасап, іске қосыңыз.

known = ["шахмат", "сурет"]
text = input("Сұрақ: ").lower()
clean = text.replace("?", "").replace(",", "")
words = clean.split()
found = []
for word in words:
    if word in known:
        found.append(word)
print(found)

Қадамның орындалатын файлы сабақтағы кодпен бірдей.

found = [] бос тізім жасайды: табылған атауларды жазатын бос парақ сияқты. for word in words: «тізімдегі әр сөзді кезекпен ал» дегенді білдіреді. Қос нүкте мен төрт бос орын қайталанатын әрекетті көрсетеді. Ішіндегі if алдындағы сегіз бос орын әр сөзді тексеруді білдіреді. found.append(word) сәйкес сөзді тізімнің соңына қосады. Қайталану аяқталған соң, шегініссіз жазылған print(found) бір рет орындалады. Кіші әріпке көшіруді, екі белгіні алып тастауды және split() әрекетін 7-сабақта, in сөзін 8-сабақта көрдік. Бір атау екі рет кездессе, әзірше екі рет сақталады.

Шахмат қашан? үшін ['шахмат'] шығады. Шахмат, сурет қашан? үшін ['шахмат', 'сурет'] шығады. Робот қашан? үшін [] шығады: адам бұл атауды білсе де, біз оны шағын сөздікке қоспадық. Бос тізім «біздің тізімде табылмады» дегенді білдіреді, «мұндай үйірме жоқ» дегенді емес. Бағдарлама әлі сабақтың уақытын іздемейді.

Тірек сызба

Сұрақ → кіші әріп пен екі тыныс белгісін өңдеу → сөздер → әр сөзді қарап шығу → екі белгілі атаумен салыстыру → табылғандар тізімі.

Еске түсіріп, тексеріңіз

Кодты жауып, print(found) неге шегініссіз тұрғанын түсіндіріңіз. Содан соң Сурет қайда?, Шахмат, сурет қашан? және Робот қайда? деп енгізіңіз.

Тапсырма: СУРЕТ қашан? және Шахмат шахмат қашан? үшін нәтижені болжаңыз. Көмек: lower() қайталанған сөзді алып тастамайды. Үлгі жауап: ['сурет'] және ['шахмат', 'шахмат']. Қайталануды кейін бөлек өңдейміз. Жиі қате: print(found) жолын қайталанатын бөліктің ішіне қою; онда бір қорытынды тізімнің орнына әр сөзден кейінгі аралық тізімдер шығады.

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.