메인 콘텐츠로 건너뛰기
Učilnica FRI 25/26
  • 홈
  • 캘린더
  • 더 보기
한국어 ‎(ko)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
손님 계정으로 접속
로그인
Učilnica FRI 25/26
홈 캘린더
모두 펼치기 모두 접기
  1. 강의 현황
  2. pef
  3. Generatorji ter izpeljani seznami, množice in slovarji
  4. Generalec

Generalec

완료 조건
Due: 화요일, 31 3월 2026, 9:40 AM

Tokratna domača naloga je neobvezna, saj je snov bolj "dodatna". Vseeno priporočam, da se potrudite in jo rešite, saj vam bo poznavanje generatorjev/iteratorjev pomagalo razumeti, kako deluje Python. Pa tudi pri programiranju "nedodatnih" nalog v prihodnosti vam lahko pride prav; marsikaj bo na ta način rešljivo hitreje in preprosteje.

Če se zatakne, pišite. Z veseljem pomagam.


Za tokratne funkcije morate predpostaviti, da je argument pot generator. S klicem iter(pot) boste dobili iterator in če na dobljenem iteratorju kličete next bo vračala elemente poti. Seveda pa velja tudi for polje in pot ali kaj podobnega.

Generatorja/iteratorja, kot vemo, ne moremo, vprašati, koliko elementov bo zgeneriral, pa tudi indeksiranje (pot[n]) ne bo delovalo.

Generator lahko generira tudi zeloooooo dolge poti. Če se program zaradi tega noče ustaviti, ga pokončajte z rdečim kvadratkom zgoraj desno.

Argument ovire je množica.

Naloge

Napišite naslednje funkcije.

  1. zacetek(pot), ki vrne začetno polje poti. To ni nujno (0, 0). Pomislite, kako bi (oz. kako sem) na predavanju dobil prvi element od vas, ko ste bili v vlogi iteratorja.

  2. nto_polje(pot, n) vrne n-to polje generatorja. Šteti začnemo pri 1.

  3. zadane(pot, ovire) vrne True, če pot vsebuje kakšno oviro.

    Potrudite se nalogo rešiti s funkcijo any, ki ji podate generator.

  4. zadetki(pot, ovire) vrne generator (to je: fukcija vsebuje bodisi yield bodisi return (... for ... in ...)), ki vrne vsa polja na poti, v takem vrstnem redu, kot se pojavljajo na poti.

    Recimo, da generator generira pot (0, 0), (1, 0), (0, 0), (1, 0), (0, 0) ... in tako milijonkrat. Če na polju (1, 0) stoji ovira, mora vaš generator pol milijonkrat vrniti (1, 0).

  5. pot(smeri) prejme smeri (to je, zaporedje <, >, ^, v) in vrne generator, ki generira pot, ki jo opisujejo smeri. Pot se začne na (0, 0).

    Klic pot(">>^<") vrne generator, ki generira (0, 0), (1, 0), (2, 0), (2, 1), (1, 1).

    smeri so generator. Testi bodo (na nek način) preverili, ali vaša funkcija generira neskončno pot v desno, če je pot neskočno zaporedje znakov >.

Testi

  • testi.py testi.py
    24 3월 2026, 4:46 PM
손님 계정으로 접속 (로그인)
Get the mobile app
Moodle 제공
Obvestilo o avtorskih pravicah