729G04 Programmering och diskret matematik Python 3: Loopar
Översikt Labbar Punktnotation och strängmetoder Loopar Labb 3
Labbar?
Punktnotation
Punktnotation Ni har stött på punktnotation tidigare - kapitel med numrerade underrubriker, t.ex. kap 7.3.4 Punktnotation i Python liknar detta Anrop till funktionen random() i modulen random: random.random() Anrop till metoder och variabler i objekt: list.insert()
Repetition: funktioner i moduler # vi importerar modulen random import random # vi använder funktionen random() i modulen random print(str(random.random()))
Metoder och variabler i objekt Objektorienterad notation Objekt (datastrukturer) ha metoder (funktionalitet, verb) och variabler (data, egenskaper) T.ex. kan man be ett sträng- objekt att returnera sig själv, fast som en sträng med endast gemener eller versaler.
Strängmetoder
Strängmetoder Strängmetoder jobbar på den sträng som de anropas ifrån. Anta att my_string är en variabel som är satt till en sträng Strängmetoder anropas då med my_string.metodnamn()
Exempel på strängmetoder str.isupper() returnerar True om hela strängen består av versaler, annars False. str.islower() returnerar True om hela strängen består av gemener, annars False. str.upper() returnerar strängen i versaler. str.lower() returnerar strängen i gemener. OBS! str.upper() och str.lower() inte ändrar värdet på str!
CODELA: Strängmetoder https://www.ida.liu.se/codela/as/729g04c/strangmetoder
Några tips innan vi går vidare
Tips! Operatorn += # sätt a till "Hej" a = "Hej" # sätt a till värdet av a konkatenerat med " på dig!" a = a + " på dig" # ovanst ende kan också åstadkommas med operatorn += a += " din gamle räv"
Tips: import # Import behövs bara en gång. Brukligt är att ha alla # importer högst upp i filen. import random def get_random_float(): return random.random() def get_random_int(max): return random.randint(0, max)
Syntax diskutera med er granne! a a() a[0] a(0) "a" [a] ["a"] (a)
Syntax a a() a[0] a(0) "a" [a] ["a"] (a) variabeln a anrop till funktionen a index 0 i listan a anrop till funktionen a med 0 som input strängen "a" listan med värdet i variabeln a som första element listan med strängen "a" som första element variabeln a
Loopar
Exempel på olika slags loopar gör P, N antal gånger för varje element i sekvensen S, gör P så länge som Q gäller, gör P så länge som Q inte gäller, gör P gör P till Q inträffar
Två loopar i programmering for: upprepa ett visst antal gånger, gå igenom en sekvens while: upprepa så länge som ett villkor är uppfyllt Båda går att använda för alla typer av loopar. Det kan vara mer eller mindre "naturligt"/lättare att läsa/mindre omständigt att välja en specifik loop.
Namn på begrepp ni stött på: block
Exempel på block # I Python är block och indenteringsnivå samma sak! if i_am == "happy": print("inside the if block") print("still inside the if block") print("outside the if block")
for-loopen i Python
for element in a_sequence: statement1 statement2 statement3...
Gå igenom en lista med for names = ["Adam", "Bethany", "Chris"] # gå igenom alla element i names. det aktuella elementet # refereras till via variabeln name i loopen. for name in names: # skriv ut det aktuella elementet i listan names print(name)
for-loopen i lego
Summera tal med for numbers = [2000, 39, 596] sum = 0 # summera alla element i listan numbers for number in numbers: sum = sum + number print(sum)
range() range() skapar en "virtuell lista med heltal" (en generator) som man kan använda som en vanlig lista med heltal. range(stop): lista med heltal från 0 och som är stop lång range(start, stop): lista med heltal från start till stop- 1 range(start, stop, step): lista med heltal från start till
range() >>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(4,6)) [4, 5] >>> list(range(10, 101, 10)) [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] >>> list(range(10, 0, - 1)) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
for med range() # Skriv ut siffrorna 0 till 9 (10 siffror) for i in range(10): print(str(i))
CODELA: for-loopen och range() https://www.ida.liu.se/codela/as/729g04c/forloop
while-loopen
while condition: statement1 statement2...
Gå igenom en lista med while names = ["Adam", "Bethany", "Chris"] # Räkna upp variabeln i tills den är lika stor som # längden på listan names. Innan varje ökning av # variabeln i, använd i som index till listan names. i = 0 while i < len(names): print(names[i]) i += 1
while-loop # Forsätt så länge vi inte skriver "sluta" while input("skriv något: ")!= "sluta": print("e du dum?")
while-loop # Fortsätt i all evighet tills vi avbryter loopen # innifrån med break. while True: answer = input("skriv n got:") if answer == "sluta": break print("vad '" + answer + "'? Du r dum.")
Upprepa något ett visst antal gånger med while # sätt variabeln counter till 0. Används för att hålla # räkningen på hur många iterationer som körts counter = 0 # loopa så länge som counter <= 10 while counter <= 10: print(counter) # för varje iteration/varv i loopen, lägg till # 2 till counter counter += 2
CODELA: while-loopen http://www.ida.liu.se/codela/as/729g04/03b
continue och break
Hoppa ur en loop for i in range(10): if i == 5: # för att avbryta en loop i förtid # används break break print(i)
Hoppa till nästa varv for i in range(10): if i == 5: # För att gå vidare till nästa varv i loopen # används continue continue print(i)
CODELA: break och continue http://www.ida.liu.se/codela/as/729g04/03c
Nästlade loopar
Fotografera alla sidor i alla böcker på denna hylla.
För varje student i detta rum, räkna antalet fingrar.
CODELA: nästlade loopar https://www.ida.liu.se/codela/as/729g04c/nestedfor
Man kan ha en loop i en loop Om man har en loop som ligger i en annan loop säger man att man har en nästlad loop. Man kan referera till dem som yttre och inre loopar.
Nästlade for-loopar # Skriv ut alla multiplikationstabeller från 1 till 10. # Observera att vi använder olika variabelnamn i den # yttre och inre loopen. for num1 in range(1,11): for num2 in range(1,11): print(num1 * num2)
Nästlade while-loopar # Skriv ut alla multiplikationstabeller fr n 1 till 10. # Observera att vi använder olika variabelnamn i den # yttre och inre loopen. i1 = 1 while i1 <= 10: i2 = 1 while i2 <= 10: print(i1 * i2) i2 += 1 i1 += 1
Lista med listor a = ["Anders", "Bertil", "Cilla"] b = "Dina", "Elise", "Foggy"] c = ["Gemma", "Harald", "Inga"] my_list = [a, b, c] # Man kan använda en nästlad loop för att gå igenom # innehållet i en nästlad lista! for inner_list in my_list: for element in inner_list: print(element)