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:
- Hvis navnene er like lange er boten ganske forn?yd, og sier at matchen er 60%.
- Hvis navnene ikke er like lange, men begynner med samme forbokstav, er boten fortsatt litt optimistisk, og sp?r at matchen er 40%.
- Hvis ingen av kravene over oppfylles, er boten mistforn?yd, og matchen er bare 15%.
Tips:
- Du kan hente ut den f?rste boktaven til en streng slik:
navn = "Ola"
forste_bokstav = navn[0]
- Lengden til en streng kan hentes ut med funksjonen
len
:
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:
- Hvis den ene personen er yngre enn halvparten + 7 av den andres alder, skal match-prosenten halveres.
- Hvis forrige kritere ikke oppfylles, og begge er akkurat samme alder, skal prosenten ?kes med 10% (alts? ganges med 1.1).
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:
- ?k match-prosenten med 2 hvis et av navnene inneholder en a eller en t. Du kan sjekke om en bokstav finnes i en streng slik:
if "t" in "et navn":
# t finnes i strengen "et navn"
- ?k match-prosenten med 15 hvis et av navnene inneholder b?de en
s
og ene
og det andre navnet ikke inneholder ene
. - Senk match-prosenten med 20 hvis forbokstaven til det f?rste navnet som leses inn ikke finnes i det andre navnet.
- Gi en superboost og ?k match-prosenten med 30 hvis et av navnene slutter p? bokstaven som det andre navnet starter p?. PS: Siste bokstav kan finnes slik:
siste_bokstav = navn[-1]
. - Vi mistenker at korte navn er tulle-navn og ?nsker ikke ? gi dem h?y score. S?rg for at hvis et av navnene er p? ett tegn, skal matchen v?re 0% uansett.
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:
- 18% med Per, 25 ?r fra Oslo og Reidunn, 85 ?r fra Harstad
- 8% med Svein, 50 ?r fra Oslo og Mari, 31 ?r fra Oslo
- 14% med Svein, 23 ?r fra Oslo og Mari, 23 ?r fra Bergen
- 92% med Amed, 23 ?r fra Oslo og Lisa, 29 ?r fra Hamar
- 0% med X, 1000 ?r fra Venus og Bj?rnar, 18 ?r fra Trondheim