Oppgaver/materiale gruppetime

Oppgave 1

Skriv en klasse Person.

person = Person("Emilie")
person.blir_smittet()
assert person.er_syk()
person.blir_frisk()
person.blir_smittet()
assert not person.er_syk()

Oppgave 2

Vi husker fra tidligere gruppetime hvordan referanser fungerer i et eksempel som dette:

# 1
tall = [1, 2, 3]

# 2
nummere = tall

# 3
nummere.append(4)

print(tall)

... men hva skjer her?


# 1
person1 = Person("Emilie")
person2 = Person("Mari")
person3 = Person("Espen")

# 2
person3 = person2

# 3
person3.blir_smittet()

# 4
person2 = person1

print(person1.er_syk())

Oppgave 3

Hvis to personer m?tes og en av dem er syk, er det en viss sannynlighet for at den andre blir smittet og blir syk. Skriv en metode moter_annen_person i klassen Person. Metoden tar en annen person og en smittesannsynlighet (tall mellom 0 og 1) som argumenter. Hvis en av de to personene er syk, skal det trekkes et tilfeldig tall for ? avgj?re om det skjer smitte. Hvis det skjer smitte, skal den andre ogs? bli syk.

person1 = Person("Emilie")
person1.blir_smittet()
person2 = Person("Espen")
person1.moter_annen_person(person2, 0.5)
print(person2.er_syk())

Oppgave 4

Vi skal n? simulere X antall dager i en verden best?ende av Y personer.

Skriv kode for ? ? simulere 100 slike dager med 100 personer. Alle personene starter som friske unntatt én person.

Tell opp p? slutten av hver dag hvor mange syke personer det er og legg tallet til i en liste. Plott til slutt denne listen slik at vi kan se hvordan antallet endrer seg:

import matplotlib.pyplot as plt
plt.plot(antall_syke)
plt.show()

PS: N?r alle m?ter alle, vil en person f?rst kunne bli smittet og s? m?te en annen person samme dag og smitte videre. Det er greit.

Oppgave 5

Det er urealistisk at alle personene m?ter hverandre hver dag. Ved en pandemi er vi flinke til ? holde oss til mindre grupper. Vi antar at samfunnet v?rt best?r av en eller flere grupper, og at hver person kan v?re i en eller flere slike grupper. Hver dag m?ter personen alle andre personer i samme gruppe.

Utvid klassen person slik at personen ogs? har en liste over grupper den er med i:

person = Person("Emilie", [1, 5, 3])

Vi ser for oss at det finnes 10 grupper (1, 2, 3, ..., 10). Gi hver person blant de 100 du simulerte én tilfeldig gruppe. Endre koden slik at hver person bare m?ter personer i samme gruppe. Smittesannsynnligheten er n? mye h?yere (50%). G?r den totale smitten ned?

Hva hvis hver person er medlem av 2 tilfeldige grupper? Utgj?r det en stor forskjell? Pr?v ? ?ke antall grupper til f. eks 100 og se om det utgj?r en forskjell.

PS: Implementer gjerne en metode for ? sjekke om en person er i samme gruppe som en annen person.

Lek deg gjerne videre: