Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avBjörn Magnusson
1
Planering av ett större program - Funktioner, moduler, if och Boolean Linda Mannila 2.10.2007
2
Vad kan vi nu? Primitiva datatyper grundläggande funktionalitet Utskrift Indata Felhantering
3
Denna föreläsning Planering av ett större program Intro till funktioner och moduler Kontrollstrukturen if Booleska värden
4
Större program: Tabellkollare Vad ä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!
5
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
6
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
7
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
8
Vad är en funktion? Ett miniprogram inne i ett program min_funktion IndataUtdata
9
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.
10
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
11
”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
12
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)
13
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']
14
Exempel # Importerar mattemodulen för att få tillgång till # dess funktioner import math # Multipel tilldelning a,b,c = input(“Enter the coefficients (a, b, c): ") # Beräknar diskriminanten disc = math.sqrt(b*b-4*a*c) root1 = (-b + disc) / (2*a) root2 = (-b - disc) / (2*a) print "\nThe solutions are:", root1, root2
15
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)
16
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)
17
Exempel random.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
18
Ö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]?
19
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
20
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
21
…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
22
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)
23
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
24
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
25
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) >>>
26
Booleska uttryck OperatorExempel == 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 False True False
27
= 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
28
Logiska operatorer and, or, not Exempel x > 0 and x < 10 n % 2 == 0 or n % 3 == 0 not(x > y) OperatorExempel and (True endast då båda operanderna sanna) 5 > 5 and 3 <= 3 2 == 2 and 7 > 5 or (True då minst en operand är sann) 5 > 5 or 3 <= 3 2 == 2 or 7 > 5 not (True då operanden är falsk) not(5 > 5) not(3<=3) False True False
29
Precendensregler I uttryck med många operatorer sker evalueringen i följande ordning ( ** har högst precedens, or har lägst) ** *, /, % +, -, >=, !=, == not and or
30
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.
31
if - else if villkorstest: kod else: 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
32
if-else: exempel if 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.
33
if – else: flödesschema tal % 2 == 0 Skriv ut ”Talet är jämnt” Läs in tal Ja Nej Skriv ut ”Talet är udda”
34
if – else: motsvarande kod tal = 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
35
if – elif - else if villkorstest: kod elif villkorstest: kod else: 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
36
if – elif – else: flödesschema tal < 0 Skriv ut tal är negativt Läs in tal JaNej tal > 0 Nej Skriv ut tal är positivt Skriv ut tal är noll Ja
37
if – elif – else: motsvarande kod tal = input('Ge in ett tal: ') if tal < 0: print tal, 'är negativt' elif tal > 0: print tal, 'är positivt' else: print tal, 'är noll'
38
if – elif – else: provkörningar Ge in ett tal: 15 15 är positivt Ge in ett tal: -5 -5 är negativt Ge in ett tal: 0 0 är noll
39
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
40
Exempel: provkörningar Vill du spela schack? (j/n) n OK, hejdå! Vill du spela schack? (j/n) j Nu skall här spelas schack! Vill du börja? (j/n) j OK, ge mig ditt bästa drag. Vill du spela schack? (j/n) j Nu skall här spelas schack! Vill du börja? (j/n) n OK, bered dig på att förlora. Låt mig fundera...
41
Övningar 1. True eller False a) True and (not False) b) (2 + 4 == 4 + 2) and (5 - 3 == 3 - 5) c) (5 = 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: 67 Mata in det andra talet: 56 67 är större än 56.
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.