Övning 2
Funktioner, loopar & inbyggda datastrukturer
Dagens agenda
Diskutera några delar av labb 1
Komihåg, det kan finnas några som ännu inte är klara så dela inte er kod.
1.
Hur kan vi jämföra om användarens val är lika med datorns val när båda kan välja mellan: sten, sax och påse?
3.
Hur skulle det kunna funka om vi ville lösa labben genom att lägga till regler i ett dictionary?
2.
Hur kan if-elif-else satserna struktureras för att jämföra de olika kombinationerna av användarens val och datorns val?
Parsons problem
Kodproblem där satserna (raderna i programmet) är givna, men inte ordningen och indenteringen. Det kan också finnas några kodrader som inte behövs.
Parsons for
Läs instruktionen för vad programmet ska göra!
Parsons for
Läs instruktionen för vad programmet ska göra!
Parsons for
Läs instruktionen för vad programmet ska göra!
Dictionary, set, tupler – Kort repetition
Ett element i en dictionary har alltid en nyckel och ett korresponderande värde. Elementen är inte ordnade. Nya element kan läggas till och element kan tas bort.
Ett set kan inte innehålla dubbletter av värden. Värdena är inte ordnade. Värden kan lägga till värden (så länge de inte redan finns) och tas bort.
En tuppel kan inte ändras efter att den skapas men har index på samma sätt som en lista.
lexikon = {"äpple": ["apple", "appfel"]}
kvartal1 = ("januari", "februari", "mars”)
färger = {"grön", "gul", "vitt"}
Vilken datatyp är lämplig (lista, dictionary, tupler eller set)?
Dela in koden i funktioner
�En riktlinje för en funktion är att den ska gå att överblicka - d.v.s inte vara längre att den får plats på skärmen.
Funktioner – definitioner, anrop och main()
def multiplicera(tal1, tal2):
produkt = tal1 * tal2
return produkt
�def main():
tal1 = int(input("Tal 1: "))
tal2 = int(input("Tal 2: "))
produkt = multiplicera(tal1, tal2)
print(produkt)
�main()
Definiera en egen funktion
Krav:
Definiera tre funktioner
Funktion 1:
Funktion 2:
Main-funktionen:
Parsons om du föredrar det
Moduler
Att använda inbyggda moduler är ofta väldigt bekvämt istället för att definiera de själv. Vi kan också dela upp vårt eget program i flera filer för att göra det lättare att återanvända funktioner i olika program.
Exempel: Om vi har en fil där vi definiera en funktion för en tärning med x antal sidor, kan vi använda den i flera typer av brädspel.
https://trinket.io/python3/d73e4898ec
Gå igenom koden och testkör den.
�En riktlinje för en funktion är att den ska gå att överblicka - d.v.s inte vara längre att den får plats på skärmen.
Exempel med modulen turtle
Idén om Turtle kommer från “Logo”. Logo är ett programspråk som var speciellt utformat för att lära barn programmera, utvecklat 1967. Till programmet hörde också en fysisk robot som gick att programmera, utrustad med en penna för att kunna rita ut former.
Exempel: https://trinket.io/python/559f5bbd94
I filen “shapes.py” finns funktioner för att rita cirklar, fyrkanter och stjärnor. Testa att ändra om programmet och rita ut andra former.
Hur kan strukturen förbättras i det här programmet?
Exempelkod: https://trinket.io/python3/b3ef58bb6c
Påminnelse: Riktlinjer för bra läsbarhet och enklare felsökning
Hur kan strukturen förbättras i det här programmet?
Exempelkod: https://trinket.io/python3/b3ef58bb6c
Är det något mer som kan förbättras nu när ni kollat på riktlinjerna?
Live-code övning
Uppgift - skapa ett program som genererar svenska “naturefternamn”
Förslag på substantivlista:
substantiv_lista = ["sjö", "strand", "blom", "kvist", "gren", "törn", "ros", "moss", "bäck"]
Skapa efternamn som: “Sjöstrand” och “Törnbäck”
Labb 1
Sten, sax, påse
Deadline: Fredag 10/11