Autorské riešenie
V tejto úlohe potrebujeme zo zadaného textu vypočítať 3 hodnoty:
S textom potrebujeme teda pracovať na úrovni slov, viet a aj celého textu. Výhodné preto bude, ak z celého textu vyberieme len slová oddelené medzerou. Interpunkčné znamienka môžeme v upravenom texte vynechať. Počas úpravy si priebežne zaznamenávajme počet interpunkčných znamienok a špeciálne tých, ktoré ukončujú vety. Následne spočítame počet slov celkovo a koľko z nich je funkčných. Posledným krokom bude výpočet troch požadovaných hodnôt. Výsledná funkcie môže vyzerať nasledovne:
Všimnime si úpravy textu. Interpunkčné znamienka "vyhadzujeme", pričom za každé nájdené zvýšime ich počet. Ak je to znamienko pre ukončenie vety, zvýšime aj počet viet. Výsledkom je text, v ktorom sú slová oddelené medzerami a navyše písané malým písmom (znak.lower()). Funkcia reťazca split rozdelí text na slová. Nestačí spočítať počet medzier, pretože medzi slovami, ktoré sú oddelené pomlčkou sú dve medzery. Následne spočítame počet funkčných slov. Pre každé slovo v zozname slov otestujeme, či sa nachádza medzi funkčnými slovami. Posledným krokom je výpočet troch požadovaných hodnôt a ich návrat. Vaše zaujímavé riešenia a najčastejšie chyby Najčastejšou chybou bolo vytvorenie funkcie, v ktorej zoznam funkčných slov nebol parameter, ale globálna premenná. Používanie globálnych premenných je problematické, pretože funkcia sa spolieha na to, že takáto globálna premenná existuje. Ak ju prenesieme niekam inam, už to platiť nebude a funkcia nebude fungovať. Ďalším problémom bol znak pomlčka, ktorý má okolo seba medzery. Ak v texte spočítame počet medzier, nevieme z neho odvodiť počet slov. Podobne, ak takýto text rozdelíme podľa medzier, ostane tam pomlčka, ktorá sa bude interpretovať ako jedno slovo. Poslednú chybou bolo, že v texte sa mohli vyskytovať funkčné slová písané veľkým písmom. V zozname funkčných slov však všetky slová sú písané malým písmom. Na záver vás chceme požiadať o používanie popisných identifikátorov vo vašich programoch.
|
||||||||||
|
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |
||||||||||