
Информатика: өз цифрлық көмекшімізді жасаймыз 32-сабақ (барлығы 38)
Көп тапсырмаға арналған тізімдер мен сөздіктер
Бірнеше тапсырманы тізімге жинап, сөздік өрістерін оқып, қайталанған `id` қате жауап бермей тұрып тоқтатамыз.
Картадағы орнымыз
Бұл 72 сабақтың 32-сі, Python блогының (27–38) бөлігі. Тірек сызба тексерілетін өтулерді көрсетеді. 0.3 қағаз келісіміндегі еске салудың бес нәтижесі мен ойдан алынған бастапқы тапсырмаларды жалғастырамыз.
Жағдай және сұрақ
Қағазда тапсырмалар жеке карточка болды. Файлда әрқайсысында id, title, done, кейін due_date өрістері бар. Атаулар бірдей болса, керегін қалай табамыз? Екі бөлек карточкаға бір id неге қауіпті? Дерек құрылымын атқаратын жұмысына қарай таңдаймыз.
Жаңа сөздерді анық түсінейік
Тізім [] тапсырмаларды ретімен сақтап, бәрін қарап шығуға мүмкіндік береді. Сөздік {} кілтті мәнмен байланыстырады: task["id"] бір тапсырманың өрісін оқиды. Бұл жерде кілт — өрістің атауы; оны тапсырманың бірегей сәйкестендіргішімен шатастырмаңыз. Индекс — тізім орнының нөлден басталатын нөмірі. Жиын set() қайталанбайтын мәндерді сақтап, бір id қайта келсе байқатады. by_id сөздігі іздеуді жеңілдетеді, бірақ қайталауды тексермей құрсаңыз, кейінгі жазба алдыңғысын үнсіз басады.
Сабақтың тірек сигналы
Кіріс → ережені тексеру → күйді өзгерту → бақыланатын нәтиже. Бағдарлама қай жерде деректі оқитынын, келісіммен салыстыратынын және қай жерде тек хабарлайтынын көрсетіңіз. Қадам сызбада көрінбесе, кодтан тауып, өз трассаңызға қосыңыз.
Қадамдап талдаймыз
Екі карточка қойыңыз: біріншісінде id=t-01, done=False, екіншісінде id=t-02, done=True. Тізім олардың ретін сақтайды, by_id әр id мәнін карточкамен байланыстырады. Төменгі код t-02 үшін True шығарады. Енді id=t-02 деген үшінші карточка қосыңыз: жай сөздік біреуін жасырады. Сондықтан сөздік құрмай тұрып, seen жиынымен қайталауды тауып тоқтаңыз.
Болжаңыз және тексеріңіз
Нәтиже блогын жабыңыз. Атаулар мәнін жол сайын бақылап, әріп регистрі мен жол ретін қоса нақты мәтінді болжаңыз. Содан кейін ғана кодты step-03 каталогында python3 арқылы орындап, таңба бойынша салыстырыңыз. Бір кірісті өзгертіп, іске қоспай тұрып жаңа болжам жазыңыз. Айырма болса, жауабыңызды кейін ыңғайламай, алғашқы ауытқыған жолды табыңыз.
tasks = [{"id": "t-01", "done": False}, {"id": "t-02", "done": True}]
for task in tasks:
print(task["id"], task["done"])
Күтілетін нәтиже
t-01 False
t-02 True
Қатені табыңыз
Екі тапсырманың атауы «Кітап оқу» болып, id бөлек болса — қайталау емес. Ал атауы бөлек, id бірдей екі жазба — қайталау. Атау бойынша тексеру екі жағынан да қателеседі. Тағы бір тұзақ: tasks[1] екінші элемент, бірақ id=1 тапсырмасы емес.
Жобаға енгізілетін өзгеріс
Бастапқы үш тапсырманы мәндерін өзгертпей, сөздіктер тізіміне көшіріңіз. Санау мен еске салудан бұрын бірегейлікті тексеріңіз: қате кіріс шынайы көрінетін, бірақ жалған нәтиже бермеуі тиіс.
Тапсырма және дәлел
Үш бастапқы тапсырмадан тізім жасап, seen арқылы id тексеретін функция жазыңыз. Бос тізімді, бастапқы үшеуді, t-01,t-02,t-01 тізбегін және атауы бірдей, бірақ id бөлек екі жазбаны тексеріңіз. Әр қадамнан кейін жиын ішін салыңыз. Тек сәтті тексеруден соң by_id құрыңыз.
Жаңа жағдайға көшіру
Кітапханада екі кітаптың атауы бірдей, түгендеу нөмірі бөлек болуы мүмкін. Беру ретін сақтау үшін қандай құрылым, нөмірмен тез табу үшін қандай құрылым керек? Қайталанған нөмірді қай жерде тексересіз?
1, 7 және 30 күннен кейін қайталау
1 күннен кейін бетті ашпай ереже мен бір шекара мысалын еске түсіріңіз. 7 күннен кейін жаңа мысалдағы қатені сыныптасыңызға түсіндіріңіз. 30 күннен кейін жоба тестін қайталап, бұрынғы жазба мен нәтиженің сақталғанын тексеріп, ережені өзге міндетке қолданыңыз.
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.