Testoppgave Alternativt oblig-løp

Denne oppgaven er ment for studenter som har lyst på en smakebit på det alternative oblig-løpet. Oppgaven skal være mulig å løse ved hjelp av det man har lært de første to ukene i IN1000, men er ment å være vanskeligere enn andre oppgaver gitt disse to ukene. Det gis også færre detaljerte instruksjoner om hvordan man skal løse oppgaven enn hva som er typisk for vanlige oppgaver og innleveringer i IN1000.

Du finner løsningsforslag her, men ikke se på det før du har gjort et ordentlig forsøk på å løse oppgaven!

Spørsmål til oppgaven kan rettes til ivargry@ifi.uio.no.

Kjærlighetskalkulator

I denne oppgaven skal vi lage en bot som skal fortelle hvor god match den tror det er mellom to personer.

Boten skal samle informasjon om de to personene, gjøre vurderinger og til slutt printe en prosent mellom 0 og 100. Boten skal implementeres stegvis i løpet av de neste oppgavene, og for å sjekke at du har gjort alt riktig vil det til slutt være noen "test-caser" som du kan teste boten på.

Oppgave 1: En superenkel bot

Lag en fil lovetester.py som du skriver all koden i. Skriv et enkelt Python-program som leser inn navnet på to personer og lagrer navnene i to variable. Definer en variabel match som har verdien 0.

Vi ønsker å starte med å konvertere navnene til små bokstaver slik at sammenligningene vi skal gjøre blir enklere. Du kan konvertere et navn til små bokstaver slik:

navn1 = navn1.lower()

Denne enkle boten bryr seg kun om navnene til de to personene:

Tips:

navn = "Ola"
forste_bokstav = navn[0]
lengde = len(navn)

Test programmet ditt med et par navn, og sjekk at riktig match-prosent printes.

Oppgave 2: Bosted og alder

Utvid programmet slik at også bosted leses inn. Hvis bostedet til de to personene er det samme, skal match-prosenten økes med 50 prosent av sin opprinnelige verdi (det verdien var etter at koden i oppgave 1 har kjørt). Merk at det ikke skal legges til 50, men at matchen skal økes med 50 prosent av det den var. Hvis verdien f. eks var 60 etter at navnene var vurdert, skal verdien økes med 50% av dette, dvs at 30 skal legges til og vi ender på 90 prosent. Dette gjøres enklest ved å gange tallet som ble bestemt av reglene i oppgave 1 med 1.5.

Etter at bosted er vurdert, skal vi vurdere alder:

OBS: Rekkefølgen på reglene er viktig her. Husk å implementere bosted før alder.

Test gjerne programmet ditt litt før du går videre. Sjekk for eksempel at to personer som heter det samme, bor på samme sted og som har samme alder får 99% match.

Oppgave 3: Hemmelig faktor

Vi ønsker at boten vår skal være litt mystisk og ikke så forutsigbar. Vi ønsker derfor at den skal påvirke match-prosenten på litt rare måter slik at de som bruker den ikke skal klare å skjønne hvordan den fungerer.

Vi antar her at en match-prosent har blitt bestemt basert på reglene i oppgave 1 og 2, og vi ønsker å endre denne prosentene videre.

Implementer følgende regler:

if "t" in "et navn":
    # t finnes i strengen "et navn" 

Til slutt: Vi ønsker ikke desimaltall i prosenten som printes. Rund derfor at prosenten før den printes. Hvis prosenten ender opp med å være over 100 skal den bli 100. Hvis den ender opp under 0 skal den bli 0.

match = round(match)

Test at du har implementert reglene rett

Hvis du har gjort alt rett, bør du få følgende match-prosenter: