Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Filtrering:

7.05: Askeladden og de gode hjelperne

Askeladden har hørt at det er mulighet for å vinne kongsdatteren og halve riket dersom han kan overkomme en rekke utfordringer. På sin ferd i et skip som kan gå til lands og til vanns, og i luften med, får han stadig med seg flere gode hjelpere. Vi skal nå modellere skipet, hjelperne, og deres ferd mot kongsgården.

  1. Skriv en klasse God_hjelper. Alle gode hjelpere har overnaturlige egenskaper, som for eksempel "spiser stein", eller "lager snø". Egenskapen skal lagres i instansvariabelen String evne.
  2. Skriv en konstruktør til GodHjelper, samt en metode def hent_evne(self):, som returnerer hjelperens evne.
  3. Skriv en klasse Magisk_skip, som inneholder en liste av God_hjelper-pekere.
  4. Skriv en metode def plukk_opp_ny_hjelper(self, hjelper):, som setter en ny hjelper i listen.
  5. Opprett et objekt av klassen Magisk_skip, og start din seilas mot kongsgården. Finn eventyret "Askeladden og de gode hjelperne" i Asbjørnsen og Moes Samlede Eventyr. Opprett objekter for alle de 7 hjelperne, og gi dem korrekte egenskaper. Når du har fylt båten med 7 hjelpere med de nødvendige egenskaper, vinner du kongsdatteren og halve riket!

Lykke til på ferden!

Hint: Har du ikke tilgang til Asbjørnsen og Moes Samlede Eventyr, kan du lese eventyret her:
http://runeberg.org/folkeven/099.html

7.07: Oppmøteregistrering

Oppgaven går ut på å lage et enkelt system for å ta oppmøte på i en skoleklasse.

a) Opprett en klasse Elev. Hver elev skal ha et navn, en min_laerer av typen Laerer og en ant_oppmoete. Navn skal settes i init-metoden.

Klassen har følgende grensesnitt:

class Elev:
    def __init__(self, navn):
        # Her settes navn

    def sett_laerer(self, laerer):
        # Oppdaterer verdien til min_lærer

    def hent_navn(self):
        # Returnerer navn til eleven

    def oek_oppmoete(self):
        # Øker ant_oppmøte med 1

    def ant_oppmoete_timer():
        # Returnere antall ganger eleven har møtt opp

b) Opprett en klasse Laerer. Hver laerer skal ha et navn og en liste mine_elever av typen Elev. Navnet til læreren skal få verdi i init. Klassen skal ha folgende grensesnitt:

class Laerer:
    def __init__(self, navn):
        # setter navn på læreren

    def sett_inn_ny_elev(self, ny_elev):
        # Setter inn ny elev i listen

    def ta_oppmoete(self):
        # Printer melding om
        # "Er <elevens navn> tilstede?"
        # Om bruker taster "ja" inn, kall på den 
        # aktuelle elevens øk_oppmøte-funksjon. Dette
        # gjøres på alle elev-objektene i listen mine_elever

c) Opprett et Laerer-objekt. Navnet kan være navnet på gruppelæreren din.

d) Opprett tre Elev-objekter. Navnene skal være ditt eget, og to av dine medstudenter sitt. Kall metoden sett_laerer i alle Elev-objektene, der du sender med Laerer-objektet som du opprettet i oppgave c) som parameter.

e) Kall metoden sett_inn_ny_elev med hver av de tre elevene som parameter i Laerer-objektet.

f) Ta oppmøte på elevene. La minst en være til stede og minst en ikke være tilstede. Sjekk etterpå om Elev-objektene har riktige antall oppmøtte timer.

7.08: Finn ut hvilke elementer som overlapper.

Lag to lister som skal inneholde heltall. La den første listen inneholde verdiene 1, 2, 3, 4, 5 og 6, og den andre listen skal inneholde verdiene 2, 4 og 6. Finn en måte å regne ut hvor mange verdier som finnes i begge listene.

7.09: Adresse.

a) Implementer en klasse 'Adresse'.
En adresse har et husnummer, et valgfritt leilighetsnummer, gatenavn, postnummer og sted.

b) Klassen skal ha følgende to metoder (tillegg til init):

def print(self):

som skriver ut hele adressen og

def kommer_etter(self, ny_adresse);

som tester om denne adressen kommer etter den andre adressen. Vi sammenligner adressene med postnummer.

c) Opprett to objekter av klassen Adresse. De skal ha ulike adresser og ulikt postnummer. Deretter skal du sammenligne de to adressene.

7.10: Hundehus

a) Lag en klasse Hund. En Hund har et navn og en alder. Verdiene skal bli satt i konstruktøren.

b) Lag en klasse Hundehus. Et hundehus skal inneholde en hund av typen Hund. Det skal ikke være noen konstruktør til denne klassen.

c) Lag en metode def sett_inn_hund(self, hund): i Hundehus som setter instansvariabelen hund til å være hund i parameteret.

d) Lag en metode def print_ut_info(self): i klassen Hund, som printer ut alder og navn til terminalen.

e) Lag en metode def print_ut_info_om_min_hund(self): i klassen Hundehus, som kaller på hund.print_ut_info(). Om Hundehuset ikke har noen hund, skal det printes ut "Hundehuset er tomt".

f) Kall på print_ut_info_om_min_hund() i klassen Hundehus imens Hundehuset fremdeles er tomt, og sjekk om den printer ut "Hundehuset er tomt".

g) Sett så inn Hund-objektet du lagde i e) inn i Hundehuset. Kall så på print_ut_info_om_min_hund() og sjekk at den printer ut riktig informasjon om hunden.

7.11: Konstruktørteori

Dette er en teori-oppgave og skal løses med penn og papir

a) Hva er en konstruktør(init)?

b) Hvorfor bruker vi konstruktører(init)?

c) Se på følgende kode. Hva er feil?

class Person: 
    def __init__(navn):
        _navn = navn