Programmering i Python – Algoritmer og kode

Page 1

PROGRAMMERING I PYTHON

ALGORITMER OG KODE

Knut Skrindo Øystein Johannes Weider
Innhold KAPITTEL1 ViprogrammereriPython..............6 1.1Komigang.........................8 1.2Tall,regningogvariabler..........10 1.3Input................................21 1.4Vilkår...............................24 1.5Løkker..............................31 1.6Turtle...............................46 1.7Lister................................51 1.8Funksjoner.........................57 1.9Anvendelseritallteori.............64 1.10Tallmønstre........................73 1.11Feilmeldinger......................79 1.12Ekstrabiblioteker..................83
KAPITTEL2 Algoritmer...............................84 2.1Løpegjennomlister...............86 2.2if-tester.............................90 2.3Størsteverdi........................94 2.4Kombinasjoner.....................98 2.5Sjekkalle...........................102 2.6Sortering...........................105 2.7Søkmedhalvering.................109 2.8Strengoperasjoner.................112 2.9Størrealgoritmer..................114 KAPITTEL3 Vibrukerprogrammeringen...........116 3.1Rekursivemønstre.................118 3.2Grafskframstilling.................124 3.3Datafraeksternekilder............136 3.4Funksjoneribruk..................140 3.5Økonomi...........................167 3.6Simulering.........................171 Oppgaver.......... .......................190 Løsninger.................................200 Stikkord...................................254

Viprogrammerer iPython

[1]

Åprogrammerebetyråskriveinstruksjoner tilenPComhvasomskalskje.Dettelikner littpåålageenmatoppskrift.Duskriveralle instruksjonersomskaltilforatenannen personskalkunnelagedensammeretten. ViskriverinstruksjoneneiPythonogsiervi programmerer.

Programmeringsspråk

Blokkbaserte:Scratch, Blockly

Tekstbaserte:Python, Javascript,C++,PHP, Swift,Ruby,Go

1.1Komigang

Vimenneskersnakkermangeforskjelligespråk.Påsammemåte fnnesdetenrekkeulikespråkvikanprogrammerei.Idenneboka programmererviiPython.

Nårduskriverentekst,tegnerengrafellerredigereretbildepåPC-en, brukerduulikeprogrammer,foreksempelWord,GeoGebra,Paintog andre.TilsvarendekanviskrivePython-kodeifereprogrammereller miljøer,foreksempelSpyderellerThonny.SelvePython-kodenerden sammeuansetthvorviskriverden,mendeulikeprogrammeringsmiljøeneharlittforskjelligefordelerogulemper.

Devanligsteprogrammeringsmiljøene

Etegetprogram:

Spyder,Thonny, Mu,PyCharm, Pythonista,Pyto ogandre

Etnettbasert program:Replit, Trinket,Programiz ogandre

Etdokumentfokusertprogrammeringsmiljø: JupyterNotebook

Etprogrammeringsmiljøbeståravtodeler–ettekstvindu,hvordu skriverselvePython-koden,ogetvindu,derresultatetfraprogrammet kommer.Dettevinduetkalleskonsollen.Hvordandetteserutvariererfra programtilprogram.NedenforserdustandardvinduettilSpyder:

Tekstvinduet

Konsollen

ISpyderertekstvinduettilvenstreogkonsollennedersttilhøyre. Øversttilhøyrekanduvelgemellomfaner,deriblantenoversiktover variablene.IThonnyertekstvinduetøverstogkonsollennederst.Til høyrekanduforeksempelvelgeåviseenoversiktovervariablene.

8 KAPITTEL1

Konsollen

Vikanregneikonsollenpåsammemåtesomvigjørpåenkalkulator.Vi regnerut3 + 4vedåskrivedetinnikonsollenogtrykkerpåenter:

Vifårat3 + 4 = 7.Nårviskriverlangkode,erdetimidlertidmerpraktisk åskriveitekstvinduet.Nårviønskeråviseetresultat,sendervidettil konsollenmedkommandoen print(<detduskalprinte>) Heretterprogrammererviderformestitekstvinduet.

Dittførsteprogram

Itekstvinduetskrivervi:

1 print('Programmering er gøy!')

Derettertrykkervipåknappenmerketmed«Runfle»/«Runcurrent script»ellerliknende.OfteerdetetgrøntsymbolsomliknerpåenPlayknapp: .Dakommerfølgendetekstoppikonsollen:

Programmeringergøy!

Gratulerer,duharnåskrevetdittførsteprogramiPython!Programmeter påbareénlinjeoginneholderkunkommandoen print,sammenmed tekstensomskalvises.

Komigang 9
Tekstvinduet Konsollen
In[1]:3+4 Out[1]:7

1.2Tall,regningogvariabler

Tallogregning

Somvisåovenfor,brukervi print tilåsendeteksttilkonsollen.Vi kallerdetgjerneåskrivetilskjermelleråprinte.Detskjeringentingi konsollenutenatvibruker print-kommandoen.Såhvisvivilhasvareti etregnestykkeskrevettilkonsollen,måviprintesvaret.

::: EKSEMPEL1.1

Regnut.

a)23 · 5

b) 2 + 8 11

LØSNING

Viskriveretprogramsomregnerut.

1 print(23*5)

a)

Nårvikjørerprogrammet,fårvi115ikonsollen.

1 print(2+8‑11)

b)

Nårvikjørerprogrammet,fårvi 1ikonsollen.

Programmeringengirennaturligstrukturpåarbeidet.Viskriver utregningeroginstrukseritekstvinduet,ogbruker print-kommandoen tilåstyrehvasomblirsynligikonsollen.Eksempeletoverviserat tegnenefordefreregnearteneerdesammesomdepleieråværepåen datamaskin.Tegneneformultiplikasjonogdivisjonvirkerpådetallene somstårumiddelbartforanogbaktegnet:

3+4*5‑3/6‑1 betyr3 + 4 5 3 6 1

Detbetyratmultiplikasjonstegnetvirkerbarepå4og5,mensdivisjonstegnetvirkerpå3og6.Hvisviskalavvikefradette,brukerviparenteser.

::: EKSEMPEL1.2

Regnut3 + 4 + 7 2 + 1.

10 KAPITTEL1

LØSNING

Visetterparantesrundttelleren,sidendenharfereledd:

1 print(3+(4+7)/2+1)

Hvisvikjørerdetteprogrammetfårvi9,5.

Viskriverpotensermeddobbeltgangetegn.Detbetyrat23 skrivessom

2**3 og52 skrivessom 5**2.

IPythonbrukervipunktumsomdesimalkomma.

::: EKSEMPEL1.3

Regnut34,2442 18,441 + 2 · 312 .

LØSNING

Vibrukerpunktumsomdesimalkommaogskriverinn:

1 print(34.2442‑18.441+2*3**(12))

Nårvikjørerprogrammet,fårvi1062897,80.

Detervanligåbrukeetmellomrompåhversideavtegneneforplussog minus,menikkevedmultiplikasjonogdivisjon.Detteerimidlertidforat detskalværelettereåleseogsehvasomhørersammen,ogharingen efektpåhvordanPythontolkerdet.

Utskriftavtekst

Nårviskalskriveenteksttilkonsollen,brukervianførselstegn.

::: EKSEMPEL1.4

Skriv«Jeglikeråtelle.»tilkonsollen.

LØSNING

Vibrukerenkleellerdobleanførselstegnrundtteksten,inni printkommandoen:

1 print('Jeg liker å telle.')

addisjon: +

subtraksjon: ‑

multiplikasjon: *

divisjon: /

potens: **

Tall,regningogvariabler 11

Nårvikjørerprogrammet,blirteksten«Jeglikeråtelle.»skrevetut: Jeglikeråtelle.

Hvisviskalskriveutfereting,kanvibrukefere print-kommandoer:

1 print('Arealet av trekanten er ')

2 print(0.5*3*5)

Ulempenmeddetteeratvifårlinjeskiftetterhver print-kommando:

Arealetavtrekantener

7.5

Vikallerdetsomstår inniparentesentil enkommandoforet argument.

Dettekanvifksevedåleggetiletekstraargumenttil print,nemlig «end».Hvisviikkeskrivernoe,gir«end»etlinjeskifttilslutt.Hvisvivilha etmellomrom,skriverviforeksempel print(3+4,end=''):

::: EKSEMPEL1.5

Enrettvinklettrekanthargrunnlinje3oghøyde5.Bestemarealet.

LØSNING

1 print('Arealet av trekanten er', end='')

2 print(0.5*3*5)

Nårvikjørerprogrammet,fårvi Arealetavtrekantener7.5

Vioppnårdetsammemedetkommamellomhvertingvivilprinte:

1 print('Arealet av trekanten er',0.5*3*5)

Dettegirsammeoutput:

Arealetavtrekantener7.5

12 KAPITTEL1

Kvadratrotog π

DefestekommandoervitrengererinnebygdiPython.Avogtiltrenger viitilleggålasteinnekstrakommandoer,somliggerlagretisåkalte biblioteker.Vilasterinnbibliotekenemedkommandoen import:

1 import math

KommandoenilinjaoverlasterinnbiblioteketMath.Dettebiblioteket inneholdervanligefunksjonerogsymboler,somblantannetkvadratrot og π.NårviskalbrukekommandoerfraMath-biblioteket,skrivervi «math.»forankommandoen.Kvadratrotfårvidamedkommandoen sqrt() med math. somforstavelse.

::: EKSEMPEL1.6

Regnut √2.

LØSNING

1 import math

2 print(math.sqrt(2))

Nårvikjørerprogrammet,fårvi1,4142135623730951tilsvar.

Math-biblioteketmålastesinnialleprogrammerderviskalbrukedet. Hvisviskalbrukekonstanten π,skrivervi math.pi.

::: EKSEMPEL1.7

Beregnarealetavensirkelmedradius3.

LØSNING

1 import math

2 print(math.pi*3**2)

Vikjørerprogrammetogfåratarealeteromtrent28,274.

Tall,regningogvariabler 13

OPPGAVER

1.1

BrukPythontilåregneut

97,2 + 3 · 11,13

1.2

LagetprogramiPythonsomregnerut

88 · 45 12 · 6

sammenmedenforklarendetekst.

1.3

Lagetprogramsomskriverutteksten«Their songplayed.Theydancedforever.».

1.4

LagetprogramiPythonsomregnerut

1.5

LagetprogramiPythonsomregnerut volumetavensylindermedradius4,5cmog høyde17,8cm.

1.6

SkrivetprogramiPythonsomregneruten desimaltilnærmingav 1 + √5 2 .

1.7

Arealetavettrapesmedhøyden h ogder sidene a og b erparallelle,er

A = (a + b) · h 2

SkrivetprogramiPythonsomregnerut arealetavettrapesderdeparallellesidelengdeneer14,3cmog10,4cmoghøyden er13,6cm.

14 KAPITTEL1
3 3 + 8 3 + 5

KanvistolepåPython?

NårviprogrammereriPython,virkerendeltinglittuvantogforvirrende istarten.Eteksempelerdesimaltall.Kanvistolepåalledesimalene Pythonviseross?

Viregnerlittikonsollenforåsjekke:

In[1]:0.1+0.1

Out[1]:0.2

Detteersomforventet,siden0,1 + 0,1 = 0,2.Menseher:

In[2]:0.1+0.1+0.1

Out[2]:0.30000000000000004

Detteserrartut!Vivetjoat0,1 + 0,1 + 0,1 = 0,3,ogikke 0,30000000000000004.

Detvisersegatvibarekanstolepåca.15–16sifreiPython.Altsom kommerettermåvibaresebortfra.Slikerdetiandredataprogrammer også,somforeksempelGeoGebraogExcel,mendetteblirvanligvis skjultfoross.

Årsakentildette,eratPC-enharbegrensetantalltalltilgjengelig.Det eringengrenserforhvilketallvikanskriveinniPython,menPC-enhar ikkeuendeligmangetalldenkanbruke.Noenharderfortattetvalg,og PC-enharca.15–16sifrevikanstolepå.

Variabler

Nårviregnerpåenkalkulatorellerietmatematikkprogramsomfor eksempelGeoGebra,regnerviettogettregnestykke,linjeforlinje.Vi brukerdetsvaretvifårvidereiutregningen.Vitenkerossforeksempel atLarsskalmaleenstorveggpåskolen.Veggener8mlangog4mhøy. Veggenskalmalesmedtrestrøkavenmalingsomdekker6L/m2 .Hvor myemalingtrengerhan?Viregnerslik:

Arealetavveggen:8 · 4 = 32

Arealsomskalmales:32 · 3 = 96

Mengdemaling:96 : 6 = 16

Larsmåaltsåkjøpe16Lmaling.

Tall,regningogvariabler 15

Nårviskalprogrammeredette,girviegnenavntildeulikesvarene underveisiutregningen.Dissenavnenekallervi variabler .Koden

nedenforregnerutdetsamme:

1 vegg =8*4

2 areal = vegg*3

3 maling = areal/6

4

5 print(maling)

Nårvikjørerprogrammet,fårvi16tilsvar.

Variablereraltsåenmåtevikantavarepåmidlertidigeverdier,slikatvi kanbrukedemvidereiprogrammet.

16 KAPITTEL1

IPythonopprettervivariablervedåtilordneenverdivedhjelpav likhetstegnet.

1 svar =15+3

Nårvikjørerkodenovenfor,fårvariabelen«svar»verdien18.

Mariaplanleggerentreningsøkt.Hunskalvarmeopp18minutter. Deretterskalhunha5 × 4minintervallermed2minutterspause mellomhvertintervall.Tilsluttharhunnedjogg10minutter. Hvorlangtidvarertreningsøkta?

LØSNING

ViskriveretprogramiPythonsomregneruttiden:

1 oppvarming =18

2 intervalltid =5*4

3 pausetid =4*2

4 nedjogg =10

5 totaltid = oppvarming + intervalltid + pausetid + nedjogg

6 print('Treningsøkta tar', end='')

7 print(totaltid, end='')

8 print('minutter.')

Nårvikjørerprogrammetfårvidetteresultatet:

Treningsøktatar56minutter.

Vikangodtbrukevariabelensforrigeverdinårvitilordnernyverditilen variabel.

1 svar =15

2 svar = svar +5

3 print(svar)

Nårvikjørerkodenovenforblirførstvariabelen«svar»opprettetmed verdien15.Deretterblirverdiensatttildenverdienvariabelenhadde tidligere,addertmed5.Resultatetnårvikjørerprogrammetblir20.

Tall,regningogvariabler 17

Dissereglenegjelderforhvilketegnvikanbruketilvariabler:

LOVLIGNAVN ULOVLIGNAVN

Vikanbrukevanlige bokstavera–å,A–Å.

Vikanbruketall0–9,men ikkeistartenavenvariabel.

startellerSTART terningto

start1

3et Vikanbrukeunderstrek(«_»). start_1

start-1

Noennavneropptatt summen sum Pythonleserkodenovenfraognedover,fravenstremothøyre.Nårvi printerenvariabel,spillerdetingenrolleomvariabelenskifterverdipået seneretidspunkt.Ikodennedenforharvariabelen«svar»verdien15når denblirprintet,sådeteraltsåtallet15somkommerikonsollen.Ilinjen nedenforblirverdienendrettil30,mendetvisesikkeikonsollen.

1 svar =15

2 print(svar)

3 svar = svar*2

Mangeprogrammeringsmiljøerharmulighettilåviseenoversiktover hvilkenverdivariableneharnårprogrammeterferdig.Detteeroftetil godhjelp.ISpyderheterdennevisningen«VariableExplorer».Etterå kjørtprogrammetovenfor,serdenslikut:

Dettebetyratvariabelen«svar»harverdien30nårprogrammeterferdig.

Skriveuttekstogvariablersammen

Nårvibrukerprogrammeringtilåløsematematikkoppgaveravsluttervi gjerneprogrammetmedåskriveutverdienavenvariabelsammenmed enforklarendetekst.Dettekanvigjørepåferemåter.

Enmuligheteråprintetekstenogvariabelenisammekommando,atskilt medkomma:

1 svar =15

2 print('Svaret er', svar)

Nårvikjørerdetteprogrammet,fårvi«Svareter15»ikonsollen.

18 KAPITTEL1

Enannenmåteeråbrukeetsåkaltf-literal,enformaterttekst.Denne lagervivedåsettebokstaven«f»foranetanførselstegn.Nårvisåskal setteinnenvariabel,setterviparentesene«{»og«}»rundt:

1 tall1 =43

2 tall2 =6

3 print(f'Tallene er {tall1} og {tall2}.')

Nårvikjørerdetteprogrammet,fårvi

Talleneer43og6.

Avrunding

Virunderenklestavmedenf-literal.Rettførhøyreparentes«}»setter vietkolonogetpunktum.Deretterskrivervihvormangedesimalervi ønsker,etterfulgtavbokstaven«f».

::: EKSEMPEL1.9

Regnut 13 7 ogrundavtiltredesimaler.

LØSNING

1 tall =13/7

2 print(f'Variabelens verdi er {tall:.3f}.')

Nårvikjørerprogrammetfårvi

Variabelensverdier1.857.

Kommandoen round(<variabel>,<antalldesimaler>) eren annenmåteårundeavpå.Vibrukerdenslik:

1 svar =13/7

2

3 print(round(svar,3))

Kodengirsvaret1,857.Viseratdetførsteargumentettil round ertallet somskalrundesav,mensdetandreargumenteterantalldesimaler.

«f»stårfor«fksert (bestemt)antall desimaler»

Tall,regningogvariabler 19

OPPGAVER

1.8

Lagetprogramhvordusettervariabelen «svar»til28ogskriverutverdienavvariabelenmedensvarsetning.Resultatetav programmetskalbli:

Verdienavsvarer28.

1.9

Lagetprogramderduopprettervariabelen

1.10

Regnut23 : 7ogrundavtiléndesimali svaret.

1.11

Velgtotallmellom2og20.Skrivetprogram derduleggerdetotalleneivariablene a og b.Programmetskalskriveuthenholdsvissummen,diferansenogproduktetav

talleneihversinsvarsetning.Foreksempel «Summenav2og5er7».

1.12

EnsommerukekjørerJohannebåtensini omlag17timer.Båtenforbukeromtrent7 literbensinpertime.Bensinprisenerdenne uka26kronerperliter.

BrukPythontilåregneuthvormyebensinforbruketkosterdenneuka.

1.13

Skrivetprogramsom:

Opprettervariabelen«tall»medverdien

5

Endrerverdientil10

Leggertil11

Leggertil6

Dobler

Skriverutverdien

20 KAPITTEL1
«tall»,dividererpå2ogskriverutsvaret.

1.3Input

Viharnålærtatvifårresultateneutfraetprogramoginnikonsollen medkommandoen print.Tilsvarendefårviopplysningerfrakonsollen inniprogrammetmedkommandoen input.

input() print()

INN UT program

Nedenforserduhvordanvikanbruke input-kommandoen:

1 navn = input('Skriv inn navnet ditt:')

2 print(f'Du heter {navn}.')

Nårvikjørerdetteprogrammet,kommerførstdetteoppikonsollen:

Skrivinnnavnetditt:

Hvisvidaskriver«Markus»ikonsollen,blirdettenavnetlagretivariabelen«navn»ilinje1iprogrammet.

Nårvitrykket«enter»,blirnavnetskrevetutmedensvarsetningfralinje2 iprogrammet:

DuheterMarkus.

Typer

Pythonoppfattertallogtekstpåforskjelligmåte.Vikanseeteksempeli detteprogrammet:

1 a =13

2 print(2*a)

3 b= 'matematikk'

4 print(2*b)

Nårvikjørerprogrammet,fårvidette:

Input 21
26 matematikkmatematikk

Ieksempeletser

dudetvikaller

kommentarertil

koden.Pythonhopper overaltsomkommer

ettertegnet«#»på enlinje.Detgjørat

vikanskrivesmå forklaringertilkoden.

Detvisersegaltsåatgangetegnet * betyruliketingfortallogtekst.Når detblirbruktpåtall,fungererdetsomvanligmultiplikasjon,mensnår detblirbruktpåentekst,blirtekstenrepetertlikemangegangersom talletsier.

Ivariabeloversiktenserviforskjellenpådetovariablene«a»og«b»:

Variabelen«a»eravtypen int,somerenforkortelsefor integer,altså detengelskeordetforheltall.

variabelen«b»eravtypen str fradetengelskeordet string,som betyrstreng,tekststrengellertekst.

TYPE ENGELSK NORSK str string streng,tekststreng,tekst int integer heltall float foating-pointnumber desimaltall,fyttall

Resultatetav input-kommandoenbliralltidtolketsomen str.Dersom detskalværeettall,måvimanueltgjøredetomtil int eller float. Kommandoeneforågjøreomtilenannentypeheterdetsammesom typen.Viserhvordanvikangjøredetteieksempeletnedenfor.

::: EKSEMPEL1.10

Skrivetprogramsomberomettallogsådoblertallet.

LØSNING

Vilagrerresultatetav input-kommandoenienvariabel,og oversettertildesimaltallmed float:

1 # Ber omet tall

2 tall = input('Skriv inn et tall:')

3 # Konverterer til float

4 tall = float(tall)

22 KAPITTEL1

5 # Dobler

6 dobbelt =2*tall

7 print(f'Det dobbelte av {tall} er {dobbelt}.')

Nårvikjørerprogrammetfårviteksten«Skrivinnettall:»i konsollen.Dersomviskriverinn«12.3»ogtrykkerpåenter,ser detslikut;

Skrivinnettall:12.3

Detdobbelteav12.3er24.6.

Dersomvibytterut float med int ieksempeletover,vilprogrammet barefungeremedheltall.Hvisviskriverinnetdesimaltall,vilvifåen feilmelding.

ValueError:invalidliteralforint()withbase10: '12.3'

OPPGAVER

1.14

Lagetprogramsomberometnavnogså svarermedenhilsenmeddettenavnet.

1.15

Lagetprogramsomberomettallog skriveruthalvpartenavtallet.

1.16

Lagetprogramsomberomradiusien sirkelogsåsvarermedarealetavsirkelen.

1.17

Lagetprogramsomberomlengdeog breddeietrektangelogsomsåskriverut arealetogomkretsenavrektangelet.

1.18

a)Lagetprogramderduberomettall. Programmetskalskriveut7merenn detdobbelteavtallet.

b) Lagetnyttprogramderduforandrer mønsteret.Foreksempelkanprogrammethalveretalletogleggetil fre.Fåenannentilåforeslåettall. Programmetskriveruthvilkettallsom hørersammenmeddettetallet.Gjenta helttildenandreforstårmønsteret.

1.19

Lagetprogramsomberomhøydeog grunnlinjeientrekantogsvarermed arealetavtrekanten.

Input 23

1.4Vilkår

Vilkårhandleriprogrammeringomåbrukeentesttilåavgjørehva programmetskalgjøre.Iprogrammetnedenforsjekkerviomtallet brukerentasterinnerpositivt.

1 tall = input('Skriv inn et tall:')

2 tall = float(tall)

3

4 if tall >0:

5 print(f'Tallet {tall} er positivt.')

Nårvikjørerdetteprogrammet,blirvibedtomåskriveinnettall.Svaret vigirbliroversatttil float oglagtivariabelen«tall».SåtesterPython om«tall»erpositivt.Hvistalleterpositivt,blirdetskrevetutentekst omattalleterpositivt.Dersomvikjørerprogrammetogskriverinnfor eksempel17,såvildetseslikut:

Skrivinnettall:17

Tallet17.0erpositivt.

EnsliktestkallerviiPythonen if-test.Programmetovenforkanutvides medeninstruksjonomhvasomskalutføresdersomtesten ikke ersann. Loddrettunder if kanviskrive else:,sombetyr«ellers».

1 tall = input('Skriv inn et tall:')

2 tall = float(tall)

3

4 if tall >0:

5 print(f'Tallet {tall} er positivt.')

6 else:

7 print(f'Tallet {tall} er ikke positivt.')

Etterenif-teststårdet alltidetkolon. Ikodenovenforblirlinje5utførthvistestenersann,menslinje7blir utførthvistestenikkeersann.

Ienif-testkanvibrukedissetegnene:

24 KAPITTEL1

TEGN BETYDNING

< Mindreenn

<= Mindreennellerlik

> Størreenn

>= Størreennellerlik

== lik

!= ikkelik not() motsattbetydning

Skrivetprogramsomberomettallogsjekkeromtalleteråtte.

LØSNING

Vibruker input foråbeomettall.Såkonverterervisvarettil desimaltallmed float.En if-testavgjøromtalleteråtte.

1 # Ber omet tall

2 tall = input('Skriv inn et tall:')

3 # Konverterer til float

4 tall = float(tall)

5

6 # Avgjør om tallet er 8

7 if tall ==8:

8 print('Du har skrevet inn tallet 8.')

9 else:

10 print('Du har skrevet innnoe annet enn 8.')

Kodenieksempeletovenforkanviillustrereietsåkalt fytskjema. Flytskjemaetviserenoversiktoverhvaprogrammetgjør:Førstfår variabelen«tall»enverdi.Deretterblirsvaretenten«taller8»eller«taller noeannetenn8»,avhengigavomtesten«tall==8»ersannellerusann.

tall tall == 8 janei tall er noe annet enn 8 tall er 8

IPythonbrukervi«=» nårvitilordneren verditilenvariabel og«==»foråsjekke omtoutsagnerlike.

Vilkår 25
::: EKSEMPEL1.11

Ienif-testkanviogsåhaferevilkår.Dakombinerervikommandoene else og if ogskriver elif.Detteerenforkortelsefor else–if.

Vikanutvideforrigeeksempelslikatprogrammetavgjøromtallet brukerenskriverinnerlikåtte,størreennåtteellermindreennåtte: ::: EKSEMPEL1.12

Gjørendringerikodenfraeksempel11slikatdetsjekkeromtallet erlikåtte,størreennåtteellermindreennåtte.

LØSNING

Vileggerinn elif mellom if og else ikodenforåsjekkeom talleterlikåtte,størreennåtteellermindreennåtte.Selinje9.

1 # Ber omet tall

2 tall = input('Skriv inn et tall:')

3 # Konverterer til float

4 tall = float(tall)

5

6 # Avgjør om tallet er 8

7 if tall ==8:

8 print('Du har skrevet inn tallet 8.')

9 elif tall >8:

10 print('Du har skrevet innett tall som er større enn 8.')

11 else:

12 print('Du har skrevet innett tall som er mindre enn 8.')

Vikankombinereutsagnitestenmedkonjunksjonene and og or, sombetyrhenholdsvis«og»og«eller».Itabellennedenforserdunoen eksemplerpåtester.

DetosannhetsverdienesannogusannheteriPythonhenholdsvis True og False.Alletesterblirevaluerttilenten True eller False

26 KAPITTEL1

TEST VERDI

2==1+1 sann Høyreogvenstresideerlike.

2==1+2 usann Venstresideer2,høyresideer3

3<6 sann 3ermindreenn6

not(3<6) usann Deterikkesantat3ikkeer mindreenn6

3>6 usann 3erikkestørreenn6

not(3>6) sann Detersantat3ikkeerstørreenn 6

2>1and6>3 sann Beggeersanne

2>1and6<3 usann 6erikkestørreenn3,såbeggeer ikkesanne

2>1or6<3 sann Minsténavdemersann,nemlig denførste.2erstørreenn1.

Innrykk

Vileggermerketilatlinjeneumiddelbartetter if, elif og else er rykketinnfravenstremarg.Innrykketvisernår if-testenerferdig.

1 tall = float(input('Skriv inn et tall:'))

2 if tall <10:

3 print('Tallet er mindre enn10.')

4 else:

5 print('Tallet er ikke mindre enn10.')

6 print('Dette er sistelinje.')

Idetoprogramkodenenedenforerenesteforskjellatkodentilhøyrehar etinnrykkistartenavlinje6.Idenførstekodenblirlinje6utførtuansett: Vikanbådehenteinn informasjonoggjøre detomtiletheltall ellerfyttallpåénlinje vedåskrive«tall= int(input(’Skrivinnet heltall:’))»eller«tall= foat(input(’Skrivinn ettall:’))»

Idennekodenblirlinje6utførtbarehvistestenilinje2erusann:

1 tall = float(input('Skriv inn et tall:'))

2 if tall <10:

3 print('Tallet er mindre enn10.')

4 else:

5 print('Tallet er ikke mindre enn10.')

6 print('Dette er sistelinje.')

Denøverstekoden,uteninnrykk,girdetteresultatet:

Vilkår 27

Skrivinnettall:5

Talletermindreenn10. Detteersistelinje.

Dennederstekodengirdette: Skrivinnettall:5 Talletermindreenn10.

FRABLOKKTILTEKST

En if-testiPythontilsvarerenstyringsblokkmed«hvis»iScratch: Scratch-programmetnedenforsetterførstvariabelen«tall»til10. Derettersjekkerprogrammetom«tall»erstørreenn10.Hvisdet erdet,sendesmeldingen«ja».Hvisdenikkeerdet,spilleslyden «mjau». når klikkes

sett tall til 10

hvis tall > 50 ellers

sendmelding ja

startlyden mjau

DettetilsvareromtrentPython-programmetnedenfor:

1 tall =10

2

3 if tall >50:

4 print('ja')

5 else:

6 print('mjau')

Istedetforåsendemeldingogspilleavenlyd,brukerdette programmet print.

28 KAPITTEL1

Tallteori,delelighet

1 print(43//5)

2 print(43%5)

Nårviutførerdivisjonforhånd,erdetikkealltiddivisjonengåropp.Da fårvienrest.Hvisviforeksempeldividerer43på5fårvi8heleog3irest. Pythonharegneoperatorersomregnerutdisse,nemlig«//»og«%».Vi prøvervårteksempel: Enoperatorerettegn ellerkombinasjonav tegnsomuttrykkeren regneoperasjon,for eksempel+,-,*,/,**, //,%.

Nårvikjørerprogrammetfårviat 43//5 er8og 43%5 er3.Detbetyrat «//»girantallheleveddivisjonen,mens«%»girrestenveddivisjonen.

Hvisettallerdeleligmedetannettall,errestennull.Vikanderforbruke «%»tilåtestedelelighet.

::: EKSEMPEL1.13

Skrivetprogramsomberomettallogsåundersøkeromtalleter deleligmed3.

LØSNING

1 tall = int(input('Skriv inn et heltall:'))

2

3 # Tester omvi får null i rest når vi deler på

3.

4 if tall%3==0:

5 print(f'{tall} er delelig med 3')

6 else:

7 print(f'{tall} er ikke delelig med 3')

Vitesterprogrammetunderveisogskriverviinn19ikonsollen:

Skrivinnetheltall:19

19erikkedeleligmed3

Vilkår 29

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.
Programmering i Python – Algoritmer og kode by laerebokforlaget - Issuu