planering av ett större program - funktioner, moduler, if och boolean
DESCRIPTION
Planering av ett större program - Funktioner, moduler, if och Boolean. Linda Mannila 2.10.2007. Vad kan vi nu?. Primitiva datatyper grundläggande funktionalitet Utskrift Indata Felhantering. Denna föreläsning. Planering av ett större program Intro till funktioner och moduler - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/1.jpg)
Planering av ett större program- Funktioner, moduler, if och BooleanLinda Mannila 2.10.2007
![Page 2: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/2.jpg)
Vad kan vi nu?
Primitiva datatyper grundläggande funktionalitet
Utskrift Indata Felhantering
![Page 3: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/3.jpg)
Denna föreläsning
Planering av ett större program Intro till funktioner och moduler Kontrollstrukturen if Booleska värden
![Page 4: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/4.jpg)
Större program: TabellkollareVad är 6 gånger 7? 49
Tyvärr, rätt svar är 42.
Vad är 3 gånger 2? 6
Bra, helt rätt!
Vad är 9 gånger 5? 45
Bra, helt rätt!
:
:
Jag ställde 10 frågor och du svarade rätt på 7 av dem.
Fint jobbat!
![Page 5: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/5.jpg)
Planera... Vad skall programmet kunna göra?
Välja två slumpmässiga tal till varje fråga Skriva ut en fråga Beräkna det rätta svaret Läsa in de svar testpersonen skriver på tangentbord Kontrollera om testpersonens svar är rätt eller inte Skriva ut ett rätt- eller felmeddelande Hålla koll på hur många frågor som testpersonen svarat
rätt på Ställa ett givet antal frågor (t.ex. 10) Skriva ut ett slutmeddelande som berättar hur bra
testpersonen klarat sig
![Page 6: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/6.jpg)
Vad kan vi redan? Vad skall programmet kunna göra?
Välja två slumpmässiga tal till varje fråga Skriva ut en fråga Beräkna det rätta svaret Läsa in de svar testpersonen skriver på tangentbord Kontrollera om testpersonens svar är rätt eller inte Skriva ut ett rätt- eller felmeddelande Hålla koll på hur många frågor som testpersonen svarat
rätt på Ställa ett givet antal frågor (t.ex. 10) Skriva ut ett slutmeddelande som berättar hur bra
testpersonen klarat sig
![Page 7: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/7.jpg)
Vad måste vi lära oss? Vad skall programmet kunna göra?
Välja två slumpmässiga tal till varje fråga Skriva ut en fråga Beräkna det rätta svaret Läsa in de svar testpersonen skriver på tangentbord Kontrollera om testpersonens svar är rätt eller inte Skriva ut ett rätt- eller felmeddelande Hålla koll på hur många frågor som testpersonen svarat
rätt på Ställa ett givet antal frågor (t.ex. 10) Skriva ut ett slutmeddelande som berättar hur bra
testpersonen klarat sig
![Page 8: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/8.jpg)
Vad är en funktion?
Ett miniprogram inne i ett program
min_funktion
Indata Utdata
![Page 9: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/9.jpg)
Funktioner Python innehåller många färdiga funktioner
(inbyggda och i sk moduler)
Redan använt en del inbyggda funktioner raw_input input type
En funktion är inte ett magiskt ord som vi bara “kan” använda,
utan det finns kod bakom alla funktioner Ett namngivet kodblock som utför en specifik sak
och som du kan anropa istället för att skriva om koden varje gång du behöver utföra den.
![Page 10: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/10.jpg)
Varför funktioner? Gör det snabbare att skriva kod
Finns mycket sådant som behöver göras ofta (t.ex. inläsning från tangentbordet)
Onödigt att alla programmerare skall skriva egen kod för det ändamålet
Ist har någon skrivit funktioner som utför dessa uppgifter (input, raw_input) som alla kan använda
Förenklar uppdateringar Om samma kod används flera gånger i ett och samma
program (t.ex. en beräkning) måste eventuella ändringar göras på alla de ställena
Om man ist skapar en funktion som sköter uppgiften räcker det att man ändrar i funktionsdefinitionen för att ändringen skall ske på alla ställen
Underlättar själva programmeringen Ett stort program är svårare att skriva än ett litet Med funktioner kan man dela upp program i mindre delar som
är lättare att hantera
![Page 11: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/11.jpg)
”Batteries included”
Förutom de inbyggda funktionerna kommer Python med en mängd specialmoduler T.ex. string, math, time, … Varje modul innehåller en mängd
konstanter och funktioner för det specialområdet
Onödigt att ha tillgång till allt hela tiden skulle ta upp plats i datorns minne
![Page 12: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/12.jpg)
Moduler Bättre: Väljer ut de funktioner vi behöver i ett
visst program och begär att få tillgång till just dem. Det gör man genom att importera modulen.
För att få tillgång till det som finns i en modul skriver man överst i programmet
import modulnamn
Därefter kan vi använda allt som finns i den modulen genom att skriva
modulnamn.funktionsnamn(eventuella parametrar)
![Page 13: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/13.jpg)
Modulen math
Matematiska konstanter och funktioner
>>> import math>>> dir(math)['__doc__', '__name__', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
![Page 14: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/14.jpg)
Exempel# Importerar mattemodulen för att få tillgång till # dess funktionerimport math
# Multipel tilldelninga,b,c = input(“Enter the coefficients (a, b, c): ")
# Beräknar diskriminantendisc = math.sqrt(b*b-4*a*c)
root1 = (-b + disc) / (2*a)root2 = (-b - disc) / (2*a)
print "\nThe solutions are:", root1, root2
![Page 15: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/15.jpg)
Modulen random random: modul som innehåller funktioner för
att generera slumptal
import random
Vad finns i modulen?>>> import random>>> dir(random)
Hjälp om modulen:>>> help(random)
![Page 16: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/16.jpg)
Modulen random Flera olika funktioner
För att välja ett slumptal i ett givet intervall:
randrange(start, stop [,step])
Returnerar ett slumptal mellan start och stop (stop är inte med i intervallet)
![Page 17: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/17.jpg)
Exempelrandom.randrange(1,100)
returnerar ett slumptal mellan 1 och 99.
>>> random.randrange(1, 100)33>>> random.randrange(1, 100)58>>> random.randrange(1, 100)1
![Page 18: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/18.jpg)
Övning
1. Hur skulle du få Python att skriva ut en rad i stil med
Vad är 7 gånger 3?
där de två talen väljs slump-mässigt ur intervallet [0, 10]?
![Page 19: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/19.jpg)
Planera... Vad skall programmet kunna göra?
Välja två slumpmässiga tal till varje fråga Skriva ut en fråga Beräkna det rätta svaret Läsa in de svar testpersonen skriver på tangentbord
Kontrollera om testpersonens svar är rätt eller inte
Skriva ut ett rätt- eller felmeddelande Hålla koll på hur många frågor som testpersonen svarat
rätt på Ställa ett givet antal frågor (t.ex. 10) Skriva ut ett slutmeddelande som berättar hur bra
testpersonen klarat sig
![Page 20: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/20.jpg)
Hittills… Program med mycket enkel struktur
Sekvens av satser
Körs (exekveras) i den ordning de kommer i programmet, dvs. från första raden till den sista
![Page 21: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/21.jpg)
…men… Denna typ av program
Är inte så otroligt intressanta! Låter inte användaren upprepa
processen, eller ändra på den ordning i vilken satserna
körs
Program är i allmänhet mer användbara om de gör det möjligt att välja vad som skall ske som följande och upprepa en viss kodsnutt flera gånger
![Page 22: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/22.jpg)
Kontrollstrukturer
Programkontroll = att hantera hur ett program köra, t.ex. i vilken ordning instruktionerna körs och hur många gånger.
Två kontrollstrukturer: Villkor (det här eller det där?) Repetition (om och om igen)
![Page 23: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/23.jpg)
Villkorssatsen Ger datorn möjlighet att välja vilken
instruktion/ vilka instruktioner som skall köras som följande
Testa om ett villkor är sant Skrev användaren in rätt ord? Är talet större än 10?
Testresultatet bestämmer vad som skall hända Skriv ut "Jajapp" om användaren skriver
in rätt ord Om alla tal är större än 10 så addera till
20
![Page 24: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/24.jpg)
if
if villkorstest:
kod
if är ett nyckelord i Python villkorstest är ett uttryck som
antingen är sant eller falskt kod är de instruktioner som skall
utföras om villkorstestet är sant. Alla instruktioner som hör till if-satsen måste indenteras
if-raden måste avslutas med ett kolon
![Page 25: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/25.jpg)
En till datatyp - Boolean Två booleska värden
True (tal olika 0) False (0)
Olika jämförelseoperatorer Likhet == Olikhet != Större än > Större än eller lika med >= Mindre än < Mindre än eller lika med <=
>>> type(True)<type 'bool'>>>>
![Page 26: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/26.jpg)
Booleska uttryck
Operator Exempel
== Lika med 4/4 == 1
!= Olika, inte lika med 4.0/3 != 1
> Större än 4 > 4
< Mindre än 'al' < ‘ax'
>= Större än eller lika med 4 >= 4
<= Mindre än eller lika med 2.3 <= 2.2
True
True
False
True
True
False
![Page 27: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/27.jpg)
= vs == = operatorn används vid tilldelning och inte
när man skall jämföra om två värden är lika x = 12 tilldelar värdet 12 till variabeln x
== operatorn används när man vill testa om två värden är lika x == 12 kollar om värdet 12 finns lagrat i
variabeln x
Python låter dig inte sätta en tilldelning som villkor i en if-sats if x = 12: fel i Python
![Page 28: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/28.jpg)
Logiska operatorer and, or, not Exempel
x > 0 and x < 10 n % 2 == 0 or n % 3 == 0 not(x > y)
Operator Exempeland (True endast då båda operanderna sanna)
5 > 5 and 3 <= 32 == 2 and 7 > 5
or (True då minst en operand är sann)
5 > 5 or 3 <= 32 == 2 or 7 > 5
not (True då operanden är falsk)
not(5 > 5)not(3<=3)
FalseTrueTrueTrueTrueFalse
![Page 29: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/29.jpg)
Precendensregler I uttryck med många operatorer sker
evalueringen i följande ordning (** har högst precedens, or har lägst)
**
*, /, %
+, -
<, <=, >, >=, !=, ==
not
and
or
![Page 30: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/30.jpg)
if: exempel
age = input('How old are you? ')
if age < 19:
print 'You are not allowed to drive a car.‘
Villkorstest: antingen sant eller falskt
Den kod som skall utföras om villkoret är sant indenteras.
![Page 31: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/31.jpg)
if - else
if villkorstest: kodelse: kod
else kan aldrig komma före if else körs bara då villkorstestet för if
är falskt använd den här konstruktionen när
programmet har två alternativ att välja mellan
![Page 32: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/32.jpg)
if-else: exempelif age < 19:
print “You are not allowed to drive a car."
else:
car = raw_input(“Which car do you want to rent? ”)
print ”A”, car, ”has been reserved.”
Alla satser som indenteras under en kontrollstruktur hör till samma kodblock.
Här hör två instruktioner till if-satsens else-del.
![Page 33: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/33.jpg)
if – else: flödesschema
tal % 2 == 0
Skriv ut ”Talet är jämnt”
Läs in tal
Ja Nej
Skriv ut ”Talet är udda”
![Page 34: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/34.jpg)
if – else: motsvarande kodtal = input("Ge in ett tal: ")
if tal % 2 == 0:
print "Talet är jämnt"
else:
print "Talet är udda"
tal % 2 == 0
Skriv ut ”Talet är jämnt”
Läs in tal
Ja Nej
Skriv ut ”Talet är udda”
Indenterade
![Page 35: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/35.jpg)
if – elif - elseif villkorstest: kodelif villkorstest: kodelse: kod
elif kan aldrig komma före if elif är en förkortning för else if kan finnas hur många elif-delar som helst i en och
samma if-sats else körs om if-test och alla elif-test är falska Använd elif när du behöver fler än två alternativ i
programmet
![Page 36: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/36.jpg)
if – elif – else: flödesschema
tal < 0
Skriv ut talär negativt
Läs in tal
Ja Nej
tal > 0Nej
Skriv ut tal är positivt
Skriv ut tal är noll
Ja
![Page 37: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/37.jpg)
if – elif – else: motsvarande kodtal = input('Ge in ett tal: ')
if tal < 0: print tal, 'är negativt' elif tal > 0: print tal, 'är positivt'
else: print tal, 'är noll'
![Page 38: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/38.jpg)
if – elif – else: provkörningarGe in ett tal: 1515 är positivt
Ge in ett tal: -5-5 är negativt
Ge in ett tal: 00 är noll
![Page 39: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/39.jpg)
Nästlade if-satser if-satser inne i if-satser
spela = raw_input('Vill du spela schack? (j/n) ')
if spela == 'n': print 'OK, hejdå!'
else: print 'Nu skall här spelas schack!' etta = raw_input('Vill du börja? (j/n) ') if etta == 'j': print 'OK, ge mig ditt bästa drag.' else: print 'OK, bered dig på att förlora.\
Låt mig fundera...'
Backslash \ för att skriva ut långa strängar
![Page 40: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/40.jpg)
Exempel: provkörningarVill du spela schack? (j/n) nOK, hejdå! Vill du spela schack? (j/n) jNu skall här spelas schack!Vill du börja? (j/n) jOK, ge mig ditt bästa drag.
Vill du spela schack? (j/n) jNu skall här spelas schack!Vill du börja? (j/n) nOK, bered dig på att förlora. Låt mig
fundera...
![Page 41: Planering av ett större program - Funktioner, moduler, if och Boolean](https://reader030.vdocuments.pub/reader030/viewer/2022033104/56814fe1550346895dbdaa31/html5/thumbnails/41.jpg)
Övningar1. True eller False
a) True and (not False)b) (2 + 4 == 4 + 2) and (5 - 3 == 3 - 5) c) (5 <= 5 + 3) or (10 == 5 * 2) or (4 >= 3)d) (5 > 6) or (not (12 == 8 -(-4))) and (1 != 5)e) (1 == 1) and (2 != 3) and (5 <= 14) f) (6 % 2 == 0 ) and ((7-3)/2 == 2)
2. Planera ett program som ber användaren mata in två tal, och sedan meddelar vilket av talen som är större.
T.ex. så här:
Mata in det första talet: 67Mata in det andra talet: 5667 är större än 56.