Planering av ett större program, del 2 - for och listor Linda Mannila 9.10.2007
Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Utskrift Indata Felhantering Funktioner och moduler (grunder) Villkorssatsen if
Denna föreläsning Vår första loop: for Vår första samlingsdatatyp: listor
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
Iterativa satser i Python Gör det möjligt att upprepa en sats eller flera satser om och om igen addera alla tal i en lista flytta alla filer som slutar med.py till ett eget bibliotek skriva ut alla tal mellan 1 och 100 fråga samma sak om och om igen tills svaret är rätt Python har två iterativa satser: for och while for används när du redan på förhand vet exakt hur många gånger du vill göra det du vill. while används däremot när du inte vet det...
Iterativa satser i Python Iterativ sats = loop En loop består, som if-satsen, av själva kontrollsatsen (for eller while) och ett indenterat kodblock När en loop exekveras, körs satserna i kodblocket tills loopen avslutas Kontrollsatsen avgör när loopen skall avslutas
for for hjälpvariabel in sekvens: kodblock Liknar if-satsen: Kolonet (:) markerar var koden som hör till for-satsen börjar Kodblocket måste indenteras for-loopen stegar igen en sekvens (en mängd värden, t.ex. strängar och listor) med hjälp av en hjälpvariabel
for >>> for bokstav in Python : print bokstav Den sekvens som hjälp-variablen går igenom (en sträng) P # Här har hjälpvariabeln bokstav värdet P y # bokstav har värdet y t # bokstav har värdet t h # bokstav har värdet h o # bokstav har värdet o n # och här värdet n
Flödesschema för for-loopen
for >>> for ord in ['Jag', 'lär', 'mig', 'programmera']: print ord Jag lär mig programmera Ny datatyp: listan
Listor Datatyp som kan lagra fler än ett värde Samlingsdatatyp Utmärks med hakparenteser [] >>> meny = [ korv, frukt, bacon ] >>> tal = [1, 2, 3] >>> mix = [ namn, 2, text, 78.9] >>> tom = []
Listor: att komma åt enskilda element >>> meny = [ korv, frukt, bacon ] korv frukt bacon 0 1 2 Med positivt index framifrån (börjar från 0): >>> meny[0] korv >>> meny[2] bacon Med negativt index bakifrån (börjar från -1)! >>> meny[-1] bacon
Mer om for for tal in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: print tal Jobbigt att t.ex. skriva ut talen 1-100: for tal in [1, 2, 3, 4, 5, 6, 7, 8, 9,, 100]: print tal Funktionen range: for tal in range(1, 101) : print tal
range range(start, slut, steg) start anger den första siffran i intervallet, medanslut anger den sista siffran minus ett. steg bestämmer hur stort avstånd det skall vara mellan elementen i den genererade listan. Man behöver inte ange alla tre argument, utan det räcker med ett enda. >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range >>> lista = range(4) [0, 1, 2, 3] >>> range(-32, -20) [-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, - 21] >>> range(5,21) [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] >>> range(21,5) [] >>> range(0,10,2) [0, 2, 4, 6, 8] >>> range(0,10,3) [0, 3, 6, 9]
range Vilka listor skapas? range(10) range(0, 10) range(0, 10, 1)
TIllbaka till for-satsen n = input('hur många tal vill du skriva ut? ') for i in range(n): print i Provkörningar: Hur många tal vill du skriva ut? 5 0 1 2 3 4 Hur många tal vill du skriva ut? 1 0
Utskriften på samma rad? n = input('hur många tal vill du skriva ut? ') for i in range(n): print i, Provkörningar: Hur många tal vill du skriva ut? 5 0 1 2 3 4 Hur många tal vill du skriva ut? 1 0