Innlesing

Et programmeringsspråk vil normalt ha mekanismer for å sende data ut og å hente data inn. For hvis språket ikke kan kommunisere med omgivelsene, vil det ha liten nytte. Det kan være snakk om å kommunisere direkte med mennesker via skjerm og tastatur, men også å utveksle data med filer, databaser, andre datamaskiner, osv.

Vi har allerede sendt data ut ved hjelp av utskriftsfunksjonen print(). Nå skal vi se hvordan vi henter data inn ved hjelp av innlesingsfunksjonen input().

Når vi kjører Python-kode og kommer til funksjonen input(), vil kjøringen av koden stoppe og vente på at brukeren skal skrive inn noe. Når brukeren trykker linjeskift, returnerer input() det brukeren skrev, i form av en streng.

Eksempel 1:

Koden under vil vente til brukeren har skrevet inn noe, og så tilordne det som er skrevet, til variabelen x, som blir av typen streng:

x = input()

Et problem med koden i eksempel 1 er imidlertid at brukeren ikke får beskjed om at Python venter på noe, utføringen av koden stopper bare opp. Dette er dårlig design, vi bør i stedet la Python gi beskjed om hva det forventes at brukeren skal skrive. Som et argument til input() kan vi derfor angi en forklarende streng. Denne strengen vil så bli skrevet ut før Python gir seg til å vente. En slik melding til brukeren kaller vi et prompt.

Eksempel 2:

Koden under vil virke som i eksempel 1, men før Python stopper og venter, skrives teksten Oppgi verdien til x: ut. Det blanke tegnet til slutt i strengen er ikke nødvendig, men det vil gjøre at det brukeren skriver inn, ikke klistrer seg helt oppi kolonet.

x = input("Oppgi verdien til x: ")

Oppgave 1:

Skriv Python-kode som spør etter og leser inn et mobilnummer, og så skriver ut teksten Ringer deg på etterfulgt av nummeret som blir skrevet i inn.

Sjekk at koden virker.

Se løsningsforslag

Oppgave 2:

Skriv Python-kode som først spør etter fornavn, så etter etternavn, og så skriver ut teksten Hei, etterfulgt av fornavn og etternavn. Hvis for eksempel brukeren skriver inn Donald som fornavn og Duck som etternavn, skal utskriften bli Hei, Donald Duck!

Sjekk at koden virker.

Se løsningsforslag

Lese inn heltall og flyttall

Det vi leser inn med input(), er alltid av datatype streng. Kjører vi koden

x = input("Oppgi verdien til x: ")

og skriver 2, vil x få verdi lik strengen "2". Dette har ingen betydning hvis vi bare skal skrive verdien ut, for eksempel med

print(f"x = {x}")

Men vil vi gjøre en beregning som f.eks. å opphøye x i andre, og skriver

print(f"x i andre er {x**2}")

vil vi få en feilmelding fordi Python ikke kan beregne x**2 hvis x er en streng, ikke et tall.

Det kan derfor være at vi ønsker å konvertere strengen vi leser inn, til tall. Det gjør vi ved hjelp av funksjonen int() hvis vi skal ha heltall, og float() hvis vi skal ha flyttall, slik som beskrevet i avsnittet Konvertere mellom datatyper i artikkelen om datatyper.

Eksempel 3:

Vi skal lese inn verdien til variabelen x, som skal være et heltall. Da kan vi skrive

x = int(input("Oppgi verdien til x: "))

Skal verdien være et flyttall, kan vi skrive

x = float(input("Oppgi verdien til x: "))

Som beskrevet i avsnittet Konvertere mellom datatyper i artikkelen om datatyper, vil vi få feilmelding hvis vi bruker float() på en streng som ikke kan konverteres til flyttall, eller int() på en streng som ikke kan konverteres til heltall. Skriver brukeren inn noe annet enn det som er forventet i eksempel 3, risikerer vi derfor at Python stopper med en feilmelding. Dette er dårlig design, vi bør i stedet gi beskjed om hva feilen er, og la brukeren prøve på nytt.

Oppgave 3:

Skriv Python-kode som leser inn verdien til to heltall, x og y, og så skriver ut tallene og produktet av dem. Hvis vi for eksempel leser inn 5 for x, og 7 for y, skal resultatet bli
5 * 7 = 35.

Se løsningsforslag

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press