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: