Input i Python
Med input()-kommandoen kan vi lage programmer som henter informasjon fra brukeren.
Input av tekst
For å forstå input()-kommandoen skal vi gå gjennom den, steg for steg:
Først definerer vi variabelen navn. Når vi kjører programmet "venter" navn-variabelen på å få tilegnet en verdi.
Når programmet kjøres vil det som står i input()-parentesen komme opp på skjermen, og derfor er det lurt at dette er noe som gir brukeren en idé om hva slags input som skal gis.
Så snart brukeren har skrevet noe i tekstboksen og trykket "Enter", vil dette noe bli verdien til variabelen navn.
Dette fører til at når vi til slutt printer, vil brukerens input skrives ut til skjermen.
Input av tall
Hva forventer du skal skje når du kjører koden over - og hva skjer faktisk?
Når du definerer en variabel med input, tror programmet alltid at det er et ord - så når vi skriver tall + tall vil programmet bare sette de to "ordene" rett etter hverandre, og for eksempel påstå at det dobbelte av 18 er 1818.
Hvis inputen fra brukeren skal være et desimaltall, bør du ha kommandoen float() "rundt" input()-kommandoen, slik at du skriver float(input()). Da blir inputen gjort om til et desimaltall. Hvis inputen fra brukeren skal være et heltall, bør du skrive int(input()). Da blir inputen gjort om til et heltall.
Som tommelfingerregel kan vi si at vi bruker int() når vi vet at inputen blir et heltall (hvor mange ganger skal vi kaste terningen o.l.), og float() når inputen kan være et desimaltall.
Oppgave: Areal av rektangel
Under ser du et program fra Variabler, der vi regnet ut arealet til et rektangel. Bytt ut spørsmålstegnene ??? slik at programmet ber om en input fra bruker for å finne lengde og bredde i rektanglet, for så å skrive ut en setning med arealet.
Lenke til koden: https://trinket.io/python3/4407198396
Løsningsforslag
Input-funksjonen og vilkår
Når vi kombinerer input-funksjonen og vilkår kan vi lage program som kan interagere med brukeren og gi en passende utskrift basert på informasjonen det får. Her skal vi se på et par oppgaver med dette.
Oppgave: SuperSplash
SuperSplash er en attraksjon på Tusenfryd, og den har et høydekrav. Hvis du er under 120 cm kan du ikke ta den, men hvis du er over har du lov.
Bytt ut spørsmålstegnene ??? i koden under og lag et program som bruker input-variabelen hoyde og gir beskjed om du kan ta SuperSplash eller ikke.
Lenke til koden: https://trinket.io/python3/c62a2a7062
Ekstra utfordring:
Lag en variant av programmet der man også kan ta attraksjonen sammen med en voksen hvis man er over 100 cm.
Oppgave:
Fra eksempeleksamen 2021
Fra eksempeleksamen 2021
Til forskjell fra elevene skal dere prøve å faktisk lage programmet som beskrives i flytskjemaet.
Legg inn noe som passer på Output a og b.
Oppgave: Gangetest
Programmet under skal be brukeren regne ut og skrive inn produktet av to tilfeldige heltall, og så fortelle om det er riktig eller ikke. Fullfør koden ved å bytte ut spørsmålstegnene, og bruk gjerne flytskjemaet under.
Input-funksjonen og løkker
Input-funksjonen kan kombineres med løkker på forskjellige måter. For eksempel kan vi bruke en input-funksjon til å bestemme hvor mange ganger ei løkke skal kjøre, eller bruke ei løkke til å be brukeren om flere input av samme slag.
Oppgave: Regne gjennomsnitt av fire tall
Du skal skrive et program som regner gjennomsnitt av 4 tall. Hvert tall skal gis som input, og til slutt skal programmet printe ut gjennomsnittet. Du kan bruke flytskjemaet under for å bygge opp koden.
Flere oppgaver og utfordringer
Oppgave: Mangekant
Lag et program som tegner en regulær mangekant, altså en mangekant der alle sidene er like lange, og alle vinklene er like store.
Programmet skal bruke to input-funksjoner for å be brukeren oppgi antall sider og sidelengder, og så tegne figuren.
Løsningsforslag
Oppgave: Gjette på tall fra sum og produkt
På samling 1 lagde vi programmer i micro:bit og Python som kastet to terninger, og oppga summen og produktet.
Skriv et program som gjør dette, og deretter får brukeren til å gjette på hva de to tallene er. Hvis man gjetter riktig, skal man få beskjed om det. Hvis ikke, skal man få vite hva tallene var.
Pass på at programmet gjør slik at hvis du bytter om på tallene, skal du fortsatt få riktig svar. (F.eks. hvis tallene er 2 og 5, men brukeren gjetter 5 og 2). Du kan se et hint under om ulike måter man kan sjekke for det.
Hint om å skrive if-tester når ulike utfall skal gi samme resultat
Den "enkle" måten å undersøke noe slikt på, er å ha if-tester i if-tester.
Dette vil imidlertid kunne gi mange linjer, så en mer elegant måte vil være å bruke konnektiver, som er bindeord som lar oss undersøke flere kriterier i én linje.
Bindeordet and brukes hvis begge kriteriene må være sanne, og bindordet or brukes når minst ett av kriteriene må være sanne.
Løsningsforslag 2
Her er et forslag på hvordan denne oppgaven kan løses ved å binde sammen kriterier med bindeordet and:
Vi kan også klare oss med bare fire linjer if-test hvis vi samler alle kriteriene med bindeordet or, men da har if-kriteriet blitt ganske langt (linje 11), og potensielt vanskeligere å tolke.