Övningar till kursen

Innehåll

Övningar till kursen#

Under den här fliken samlas samtliga övningar till kursen. Istället för att navigera bland de andra flikarna är samtliga övningar samlade här.

Tabellen nedan visar var övningar till de olika avsnitten finns.

Avsnitt

Innehåll

Nummer

Grundläggande programmering

print-satsen, variabler och tilldelningar, datatyper och typkonverteringar, input-satsen.

1.1-1.6

Satser

Listor, if- och else-satsen, elif-satsen, logiska uttryck.

2.1-2.12

Loopar

for-loopen, range-funktionen, listor och for-loopar, while-loopen.

3.1-3.13

Turtles

Rita simpel grafik med hjälp av turtle-modulen.

4.1-4.8

Funktioner

Deklarera och använda funktioner.

5.1-5.11

Lexikon

Deklarera och använda lexikon.

6.1-6.4

Projekt i programmering

Lösa diverse projekt i programmering

Onumrerade

Repetition inför klasser

Repetitionsuppgifter anpassade för att förbereda inför att lära sig klasser.

1-11

Klasser

Deklarera och använda klasser, metoder, arv av klasser.

8.1-8.20

1. Grundläggande programmering#

Övning 1.1#

Skriv ett program som hälsar på användaren. Exempelvis med orden ”Hej på dig!”

Övning 1.2#

Skriv ett program som utför additionen 5+7 och skriver ut svaret av additionen.

Övning 1.3#

Skriv ett program som frågar efter din ålder och skriver ut hur gammal du kommer vara om 5 år.

Övning 1.4#

Skapa en simpel miniräknare som frågar efter två nummer och sedan skriver ut vad summan, skillnaden, produkten och kvoten är mellan dessa tal.

Övning 1.5#

Skapa ett program som frågar efter en temperatur i enheten i grader Celsius och sedan skriver ut vad den temperaturen korresponderar i grader Fahrenheit. Tips formeln för konverteringen från grader Celsius till grader Fahrenheit är:

\(F= \frac{9}{5} \cdot C + 32 \)

Övning 1.6#

Skapa ett program där programmet frågar efter en summa pengar, efter en räntesats och ett antal år. Beräkna summan av ränta på ränta på det insatta kapitalet med hjälp av en exponentialfunktion och skriv ut resultatet till användaren.

\(y = C \cdot a^x \)

2. Satser#

Övning 2.1#

Skapa ett program där en lista med dina fyra favoritfrukter är inkluderade i en lista. Skriv sedan ut den första och den sista frukten i listan.

Övning 2.2#

Skapa ett program som frågar efter två listor som input och som sen skriver ut båda listorna tillsammans i en lista.

Övning 2.3#

Skapa ett program som innehåller 12 siffror. Skriv sedan ut varannat element i listan, var tredje element i listan och var fjärde element i listan.

Övning 2.4#

Skriv ett program som tar en mening från användaren, exempelvis:

Det här är en mening.

Dela upp meningen i en lista där varje ord är ett element. Skriv sedan ut listan.

Övning 2.5#

Skapa ett program som innehåller en lista med minst 10 heltal. Låt programmet sortera listan i:

  • Stigande ordning

  • Fallande ordning

Skriv ut resultaten.

Övning 2.6#

Skapa två listor med heltal, t.ex.:

lista1 = [5, 2, 9]
lista2 = [8, 1, 6]

Skriv ett program som:

  • Kombinerar de två listorna

  • Sorterar den kombinerade listan i stigande ordning

  • Tar bort dubbletter från den sorterade listan

Skriv ut den slutgiltiga listan.

Övning 2.7#

Låt användaren skriva in en mening. Skriv ett program som:

  • Räknar antalet ord i meningen

  • Hittar det längsta ordet

  • Hittar det kortaste ordet

Skriv ut resultaten.

Övning 2.8#

Skapa två listor med heltal.

lista1 = [1, 2, 3, 4, 5]
lista2 = [4, 5, 6, 7, 8]

Skriv ett program som:

  • Hittar de gemensamma elementen mellan listorna

  • Räknar antalet gemensamma element

Övning 2.9#

Skapa en lista med minst 10 element. Skriv ett program som roterar listan ett bestämt antal steg åt höger. Användaren ska kunna ange hur många steg listan ska roteras.

Exempel:

Lista: [1, 2, 3, 4, 5]
Steg: 2
Resultat: [4, 5, 1, 2, 3]

Övning 2.10#

Skapa ett program som frågar användaren efter ett lösenord. Om användaren anger rätt lösenord så skrivs ett meddelande att lösenordet är korrekt, annars skrivs ett meddelande att lösenordet var felaktigt.

Övning 2.11#

Skapa ett program där användaren anger hur många poäng hen fick på provet. Listan nedan visar hur många poäng som ger ett särskilt betyg.

Betyg

Poäng

A

100 poäng eller mer.

C

50-100 poäng.

E

30-50 poäng.

F

30 eller mindre

Låt sedan programmet skriva ut vilket betyg som användaren fick.

Övning 2.12#

Skapa ett program som avgör om talet du anger är jämt eller udda. Om svaret är udda eller jämt ska programmet svara att talet är udda respektive jämt.

Övning 2.7#

Kopiera listan nedan.

namn_lista = ['Ali', 'Adrian', 'Assar', 'Assad', 'Ali']

Skriv ett program som skriver ut hur många gånger namnet 'Ali' förekommer i listan.

Övning 2.8#

Skapa ett program som sorterar och skriver ut listan nedan i storleksordning.

nummer_lista = [5, 2, 7, 1, -1]

Övning 2.9#

Skapa ett program som hittar och skriver ut det största och det minsta elementet i listan nedan.

numb_list = [11, 23, 140, -54, -55, 43, 90]

Övning 2.10#

Skapa ett program som beräknar och skriver ut hur många element det är i listan nedan.

char_list = ['a', 'b', 'd', 'e'. 'f']

3. Loopar#

Övning 3.1#

Skapa ett program som med hjälp av en for-loop skriver ut dina favoritluncher från en lista.

Övning 3.2#

Skapa ett program som räknar upp till ett angivet tal från 0, koden avslutas sedan med att skriva ut att räkningen är avslutad.

Övning 3.3#

Skapa en lista med alla jämna tal mellan 1-50. Listan ska skapas utan skriva in talen själv.

Övning 3.4#

Skapa en lista med minst 15 heltal. Skriv ett program som:

  • Filtrerar ut alla jämna tal och skapar en ny lista

  • Filtrerar ut alla udda tal och skapar en annan ny lista

Skriv ut de två nya listorna.

Övning 3.5#

Skapa ett program som räknar ut och skriver ut summan av alla nummer 1-100.

Övning 3.6#

Skapa ett program som fyller en lista med alla tal från 0-10 upphöjt med 2.

Övning 3.7#

Skriv ett program som frågar användaren efter en siffra och sedan skriver ut multiplikationstabellen för siffran från 1-10.

Övning 3.8#

Skriv ett program som frågar användaren efter en siffra och sedan skriver ut vad talet är i fakultet. Definitionen av fakultet är enligt formeln nedan:

\[n! = n \cdot (n-1) \cdot (n-2) \cdot \ldots \cdot 2 \cdot 1 \]

Där 1 i fakultet definieras som:

\[1!=1\]

Övning 3.9#

Skapa ett program som frågar användaren efter en sträng, sedan svarar programmet hur många vokaler som det finns i det givna ordet.

Övning 3.10#

Skriv ett program som multiplicerar alla tal i en lista och returnerar produkten. Om listan är tom, returnera 1.

Övning 3.11#

Skapa ett program som tar en lista med heltal och returnerar summan av alla jämna tal i listan.

Övning 3.12#

Skapa ett program som räknar hur många negativa tal som finns i en lista.

Övning 3.13#

Skapa ett program som tar en lista och ett gränsvärde, och returnerar en ny lista med alla tal som är större än gränsvärdet

4. Turtles#

Övning 4.1#

Skapa ett program som ritar en kvadrat med sidlängden 100. Gör koden först utan en for-loop och sedan med en for-loop.

Övning 4.2#

Använd koden från övning 4.1 och förbättra den så att kvadratens sidor är ritade med färgen 'blue' och fyll i kvadraten med färgen 'lightblue'.

Övning 4.3#

Skapa ett program som frågar om en sidlängd och sedan ritar en liksidig triangel med den angivna sidlängden.

Övning 4.4#

Använd koden från övning 4.3 och förbättra den så att triangelns sidor är ritade med en färg som användaren användaren anger, låt även användaren ange med vilken färg som triangeln ska fyllas i med.

Övning 4.5#

Skapa ett program som ritar en cirkel med radien 20, 40, 60, osv upp till 200. Gör så att cirklarna är placerade innanför den andra. Bilden nedan visar hur resultatet ska se ut.

Flera ringar inom varandra.

Övning 4.6#

Skapa ett program som ritar ett rektangulärt hus med ett triangulärt tak.

Flera ringar inom varandra.

Övning 4.7#

Rita 5 cirklar i olika färger bredvid varandra. Bilden nedan visar hur resultatet kan se ut.

Ringar med färger.

Övning 4.8#

Skapa en spiral. Bilden nedan visar hur resultatet kan se ut.

En spiral.

5. Funktioner#

Övning 5.1#

Skapa en funktion med parametrarna tal1 och tal2 som returnerar skillnaden mellan talen.

Övning 5.2#

Skapa ett program som tar ett namn som parameter och sedan hälsar på användaren genom att säga Hej på dig och sen namnet.

Övning 5.3#

Skapa en funktion som tar tre parametrar och returnerar talet som är störst

Övning 5.4#

Skapa en funktion som tar en input parameter i grader Celsius c och sen skriver ut vad den temperaturen korresponderar i grader Fahrenheit f. Formeln för konverteringen från grader Celsius till grader Fahrenheit är:

\(F= \frac{9}{5} \cdot C + 32 \)

Övning 5.5#

Skapa en funktion som tittar om det nämnda året är ett skottår. Om det är skottår, skriv ut 'Skottår!' om det inte är skottår: skriv ut 'Inte skottår!'.

Övning 5.6#

Skapa en funktion som beräknar medianen av en lista. Skriv sedan ut vad medianen är.

Övning 5.7#

Skriv en funktion som tar en lista av tal och returnerar det största talet. (Använd inte max())

Övning 5.8#

Skriv en funktion som vänder på en lista utan att använda inbyggda funktioner som reverse().

Övning 5.9#

Skriv en funktion som kontrollerar om ett tal är ett primtal.

Övning 5.10#

Skriv en funktion som tar en lista av tal och returnerar skillnaden mellan det största och det minsta talet.

Övning 5.11#

Skriv en funktion som tar en lista med tal och returnerar två listor: en med alla udda tal och en med alla jämna tal.

6. Lexikon#

Övning 6.1#

Skapa ett program som tar in ett lexikon med matvaror och deras kostnad, programmet skriver ut alla priser.

Övning 6.2#

Använd samma lexikon som från övning 6.1 för att skriva ut alla nycklar (matvaror) i lexikonet.

Övning 6.3#

Skapa en funktion som tar en lista med namn som indata och returnerar en dictionary där varje namn är en nyckel och värdet är längden på namnet.

Övning 6.4#

Skapa en funktion som tar en lista med ord och returnerar en dictionary där varje ord är en nyckel och värdet är hur många gånger ordet förekommer i listan.

7. Projekt i programmering#

Projekt - Turtles#

Nedan kommer ett funktionsprojekt där vi ska använda funktioner för att bygga turtle-grafik.

Vi ska börja med att använda dessa två funktioner för att göra ett projekt. Gör stegen nedan i ordning eftersom de senare stegen använder kod från de tidigare stegen.


Uppgift 1 - Rektangel#

För att börja projektet behöver vi en funktion som skapar en rektangel.

Skapa en funktion def rektangel(x, y, bredd, höjd, färg) som skapar en en rektangel vid position (x, y) med bredd och höjd bredd och höjd och färgen färg. Funktionen returnerar rektangeln.


Uppgift 2 - Pentagram#

Vi behöver även en funktion som skapar ett pentagram.

Skapa en funktion def pentagram(x, y, sida) som skapar ett pentagram vid position (x, y) med sidan sida. Funktionen bygger pentagrammet.


Uppgift 3 - Vietnamesiska flaggan#

Skapa en funktion def vietnamesiska_flaggan(x, y, höjd) som ritar den vietnamesiska flaggan med nedre hörnet i punkten (x, y) och med höjden höjd. Funktionen ritar flaggan. Flaggans proportioner är 3:2, alltså bredden är 3 och höjden 2. Pentagrammet ska vara centrerad i flaggan. Se bilden nedan för inspiration.

en Flagga

Uppgift 4 - Slumpmässiga skölpaddor#

Följ stegen nedan för att lösa ett problem med turtle-modulen som använder sig av funktioner, random och turtle-modulen.


Steg 1#

Skapa en ny fil som heter randomTurtles.py


Steg 2#

Längst upp i filen lägg till:

import turtle
import random

Steg 3#

Lägg sedan till funktionerna hoppa, skapa_turtle och rektangel längst upp i filen.


Steg 4#

Skapa funktionen move_random(t) som flyttar skölpaddan i en slumpmässig riktning och sträcka. Riktningen ska ändras i intervallet [-45, 45] och längden som skölpaddan ska gå är i intervallet [0, 25]. För att skapa slumpmässiga värden använd random modulen. Ett slumpmässigt tal skapas genom att anropa funktionen random.randint(a, b) där a och b är mellan vilka tal som talet ska slumpas.


Steg 5#

Skriv nu en kod som skapar en skölpadda, ritar en centrerad kvadrat med metoden rectangle. Kvadraten ska ha sidan 500 och fyllas med en ljus färg, exempelvis 'lightblue'.


Steg 6#

Flytta skölpaddan till en slumpmässig position inom kvadraten. Nu ser koden ut någonting så här:

En kvadrat.

Steg 7#

Skriv nu kod som med hjälp av for-satsen gör anrop till move_random Nu kan det se ut så här:

En slumpmässig turtle.

Steg 8#

Lägg nu till kod i move_random som går så att om paddan efter förflyttningen befinner sig utanför den blå rutan vänder sig mot origo. Nu kan resultatet se ut så här:

En slumpmässig turtle.

Steg 9#

Skapa en till skölpadda som slumpas på samma sätt som föregående skölpadda. När avståndet mellan skölpaddorna är inom 20 enheter ska skölpaddan skriva ut meddelandet ”nära”. Metoden write(sträng) skriver ut strängen i fönstret intill skölpaddan. Låt också programmet räkna och sedan skriva ut hur många gånger det var nära mellan skölpaddorna.


Projekt 2 - Bibliotek#

Nästa funktionsprojekt innefattar att bygga ett simpelt system för ett bibliotek. Biblioteket ska kunna lägga till böcker till systemet. En bok ska kunna lånas och lämnas tillbaka och man ska även kunna se alla böcker som är tillängliga.

Steg 1#

Skapa en ny fil med namnet bookShelf.py

Steg 2#

Kopiera följande kod och lägg längst ner.

def main_program():
    available_books = []
    borrowed_books = []

    while True:
        main_menu()
        choice = input("Enter your choice: ")

        if choice == '1':
            add_book(available_books)
        elif choice == '2':
            borrow_book(available_books, borrowed_books)
        elif choice == '3':
            return_book(available_books, borrowed_books)
        elif choice == '4':
            view_books(available_books)
        elif choice == '5':
            print("Exiting the system.")
            break
        else:
            print("Invalid choice. Please try again.")

Steg 3#

Skapa en funktion add_book(available_books) som lägger till en bok i listan available_books.

Steg 4#

Skapa en funktion borrow_book(available_books, borrowed_books) som tillåter användaren låna en bok, då försvinner den från listan available_books och läggs till på listan borrowed_books.

Steg 5#

Skapa en funktion return_book(available_books, borrowed_books) som tillåter boken att lämnas tillbaka på listan available_books och boken försvinner på listan borrowed_books.

Steg 6#

Skapa en funktion view_books(available_books) som skriver ut alla boken i listan available_books.

Steg 7#

Lägg till koden nedanför längst ner och kör programmet!

if __name__ == "__main__":
    main_program()

Projekt 3 - Miniräknare#

Steg 1#

Skapa en funktion addera(tal1, tal2) som tillåter användaren att addera två tal och returnerar summan.

Steg 2#

Skapa en funktion subtrahera(tal1, tal2) som tillåter användaren att subtrahera två tal och returnerar differensen.

Steg 3#

Skapa en funktion multiplikera(tal1, tal2) som tillåter användaren att multiplikera två tal och returnerar produkten.

Steg 4#

Skapa en funktion dividera(tal1, tal2) som tillåter användaren att dividera två tal och returnerar kvoten.

Steg 5#

Skapa en funktion main() som frågar användaren efter två tal, därefter skriver den ut olika alternativ. Om användaren klickar 1 adderas talen, 2 subtraheras talen, 3 multiplikeras talen och 4 divideras talen.

När programmmet är klart ska programmet köras om och fråga användaren om den vill använda miniräknaren igen. Om 5 anges så stängs programmet ned.

Steg 6#

Redigera main() funktionen så att den frågar användaren om den vill spara svaret av uträkningen. Användaren kan nu välja att använda det sparade värdet som en del av sin uträkning och då lägga till en nytt tal för att göra en ny uträkning.

Exempel: Du anger talen 2 och 3, du väljer addition och får summan 5. Då frågar programmet dig om du vill spara summan 5 för att använda den senare. Då frågar programmet dig på nytt vilken operator du vill välja, då kanske du väljer subtraktion, då blir 5 det första talet som inputparameter till funktionerna.

Projekt 4 - Hänga gubbe#

Steg 1: Förberedelser#

  1. Skapa en ny fil:

    • Skapa en ny fil med namnet hangagubbe.py

  2. Importera nödvändiga bibliotek:

    • Lägg till följande kod högst upp i filen:

      import turtle
      import random
      
  3. Definiera ordlistan:

    • Skapa en lista med ord som spelarna ska gissa:

      ordlista = ["ord1", "ord2", "ord3", "ord4", "ord5"]
      

    Programmet kommer sedan slumpa ett av orden ovan för dig att gissa.

Steg 2: Spelets logik#

  1. Välj ett slumpmässigt ord:

    • Lägg till följande kod för att slumpa ett ord från listan och skapa variabler för spelets tillstånd:

      hemligt_ord = random.choice(words)
      gissade_ord = []
      försök = 6  # Antal försök innan gubben hängs
      
  2. Skapa huvudloopen:

    • Skapa en while-loop som fortsätter till det spelaren gubben hängs:

    • Skapa en lista med varje tecken i ordet.

    • Skapa en annan lista som är lika lång som hemligt_ord och fyller med ”_”.

    • Fråga användaren om en gissning, om gissningen stämmer ska programmet skriva ut att gissningen var korrekt, samt visa på vilken position som tecknet fyllde. Om gissningen är fel ska programmet skriva ut att gissningen var fel. Vi ska börja med att rita gubben vid senare skede, just nu fokuserar vi bara på att programmet ska fungera någorlunda.

    • Om antalet gissnar överskrider försök ska programmet skriva ut att vi har förlorat, samt avsluta koden.

    • Om vi har gissat rätt, ska programmet också avslutas.

Steg 3: Spelets grafik#

  1. Rita platsen där gubben ska hängas:

    • Skapa en funktion som ritar ut platsen där gubben kommer hängas, anropa funktionen längst ner i koden.

    • Titta på bilden nedan som inspiration för hur den kan se ut.

En plats.
  1. Rita gubben:

    • Skapa en funktion där gubben ritas ut med hjälp av turtlegrafik.

    • Dela upp ritningen av gubben i olika delar.

    • Anropa rita gubben-funktionen vid en fel gissning ska en viss del av gubben ritas ut.

Steg 4: Utvärdera programmet#

  1. Utvärdera programmet:

  • Kör programmet och testa spelet.

  • Fundera på hur du kan förbättra det:

    • Lägg till fler ord i listan.

    • Visa en vinst- eller förlustskärm med Turtle.

    • Gör spelet snyggare med färger eller animationer.

Projektuppgift med datahantering - Betygsprogram#

Uppgiften är att bygga ett program som räknar ut ditt meritvärde på gymnasiet. Vi ska räkna ut det genom att läsa av en excelfil med betygen och sedan räkna ut meritvärdet.

Steg 1#

Skapa excelfilen och fyll i tabellen som vi gjorde tidigare. Spara filen i samma mapp som programmet.

Steg 2#

Importera pandas och openpyxl längst upp i programmet.

Steg 3#

Läs av filen och spara informationen i ett DataFrame som heter df.

Steg 4#

Skapa funktionen def poäng(betyg): som tar en lista med betyg som bokstav och räknar om det från en bokstav till ett poäng enligt tabellen som beskrevs längre upp. Returnerar poängen.

Steg 5#

Skapa funktionen def merit(betygspoäng, meritpoäng): som tar alla betyg samt meritpoängen och returnerar eritvärdet.

Steg 6#

Testa att ändra betygen och se om du kan räkna ut meritvärdet genom att anropa funktionen merit.

Steg 7#

Gå till studera.nu och titta upp några utbildningar som du vill läsa. Skapa två nya kolumner i excelfilen ”Program” och ”Meritvärde”. I kolumnen program fyller du i vilka program som du vill läsa. I kolumnen meritvärde fyller du i meritvärdet som krävs för att komma in på utbildningen.

Titta i tabellen nedan som inspiration för hur ni ska fylla i excelfilen.

Program

Meritvärde

Läkarprogrammet

20

Sjuksköterskaprogrammet

12,5

Ämneslärarprogrammet

10

Veterinärprogrammet

21,5

Socionomprogrammet

15

Ekonomprogrammet

16

Steg 8#

Skapa en funktion def antagen(betyg, krav) som tar ditt meritvärde och en lisa över betygskraven. Funktionen returnerar vilka utbildningar som du kommer in på.

Projektuppgift med datahantering - Matkort#

Uppgiften är att göra ett program som håller koll på hur mycket du kan spendera på ditt matkort.

Steg 1#

Skapa filen maktort.py i din lokala map på skrivbordet.

Steg 2#

Skapa ett exceldokument som kallas matkort.xlsx. Fyll i kolumnerna med Dag och Kronor. Fyll i alla dagar du har varit i skolan den här månaden, fyll i datumen. Fyll sedan i andra kolumnen hur mycket som du spenderade den dagen på ditt matkort. Titta på exemplet nedan. Spara filen i samma mapp som programmet.

Dag

Kronor

Måndag 4/11

70

Tisdag 5/11

85

Torsdag 7/11

65

Fredag 8/11

50

Måndag 11/11

70

Tisdag 12/11

80

Steg 3#

Importera pandas och openpyxl längst upp i programmet.

Steg 4#

Läs av filen och spara informationen i ett DataFrame som heter df.

Steg 5#

Skapa funktionen def saldo(dagar, kronor): som tar en lista med alla kronor som du har spenderat den månaden. Den tar även mot en ett värde på hur många skoldagar det är den månaden. Funktionen ska returnera hur mycket pengar du har kvar på ditt matkort. Följ formeln nedan för att veta vad saldot är.

\(saldo= 70 \cdot antalskoldagar - spenderat\)

Saldo betyder hur mycket som finns kvar på kortet, antal dagar betyder hur många skoldagar som månaden består av, spenderat betyder summan av alla kostnader som finns i listan över kronor.

För att anropa den här funktionen behöver du skapa två variabler längst ner i programmet, nämligen en variabel som heter skoldagar som är antalet skoldagar, samt en variabel som heter kronor_lista som är en lista över alla tal i kronorkolumnen i excelfilen.

Steg 6#

Skapa en funktion def spendera(kronor, pengar_kvar) som tar listan över alla kronor, samt vad saldot är. Funktionen ska returnera hur mycket du ska spendera i snitt varje dag till starten av nästa månad.

För att anropa den här funktionen behöver du ge funktionen listan kronor_listasamt saldot i form av en lokal variabel där du anropar saldo-funktionen.

Steg 7#

Testa att ändra i excelfilen och se om allting stämmer.

Steg 8#

Skapa en funktion def main(). Mainfunktionen ska vi göra för att det blir med pedagogiskt och enklare att använda programmet. Börja med att skapa funktionen och kopiera följande kod:

def main():
  print("Klicka 1 om du vill kolla saldot")
  print("Klicka 2 om du vill kolla hur mycket du ska spendera i snitt varje dag resten av månaden")
  print("Klicka 3 om du vill avsluta programmet")

Steg 9#

Fyll sedan på funktionen så att om användaren anger 1 som input ska programmet visa saldot.

Steg 10#

Om användaren anger 2 ska programmet visa hur mycket du ska spendera i snitt varje dag resten av månaden.

Steg 11#

När du anger 3 ska programmet avsluta programmet. Använd då bara att om 3 anges så returneras ingenting.

Steg 12#

När du får ett svar från main funktionen, kör om mainfunktionen så du kan fortsätta programmet.

Steg 13#

Anropa mainfunktionen längst ner i programmet.

Projekt med lexikon#

I det här projektet ska vi skapa ett program som håller reda på filmer och hur dem betygssätts.

Steg 1#

Skapa ett exceldokument med följande struktur:

Film

Betyg

The Shawshank Redemption

9.3

The Godfather

9.2

The Dark Knight

9

Pulp Fiction

8.9

Schindler’s List

8.9

The Lord of the Rings

8.8

Steg 2#

Skapa en funktion som tar en excelfil som input och returnerar en dataframe med informationen.

Steg 3#

Skapa en funktion som tar ditt dataframe som sedan skapar ett lexikon med filmnamnen som nycklar och betygen som värden. Funktionen returnerar lexikonet.

Steg 4#

Skapa en funktion som lägger till en ny film till lexikonet.

Steg 5#

Skapa en funktion som hittar det högsta betyget och returnerar vilken film som har det högsta betyget.

Steg 6#

Skapa en funktion som hittar det lägsta betyget och returnerar vilken film som har det lägsta betyget.

Steg 7#

Skapa ett funktion som beräknar medelbetyget och returnerar det.

Steg 8#

Skapa en mainfunktion som du kan använda för att anropa alla olika funktioner.

8. Repetition inför klasser#

Övning 1#

Skriv en funktion factorial(n) som returnerar fakulteten av n.

Övning 2#

Skriv en funktion remove_duplicates(lst) som tar en lista och returnerar en ny lista utan dubbletter.

Övning 3#

Skriv ett program som frågar användaren efter en temperatur i Celsius och skriver ut om det är ”Varmt”, ”Lagom” eller ”Kallt” beroende på värdet.

Övning 4#

Skriv en funktion word_count(sentence) som räknar antalet ord i en given mening.

Övning 5#

Skriv en funktion find_longest_word(words) som tar en lista med ord och returnerar det längsta ordet.

Övning 6#

Skriv en funktion is_perfect_square(n) som returnerar True om n är ett perfekt kvadrat, annars False.

Övning 7#

Skapa en dictionary där nycklarna är ämnen (t.ex. ”Matematik”, ”Historia”) och värdena är betyg (t.ex. 5, 4). Skriv ut alla ämnen med betyg över 3.

Övning 8#

Importera modulen random och generera ett slumpmässigt tal mellan 1 och 100.

Övning 9#

Importera modulen random, skapa en funktion som tar ett antal element som input. Funktionen returnerar medelvärdet av de 100 slumpmässiga talen.

Övning 10#

Skapa en dictionary med fem olika länder som nycklar och deras huvudstäder som värden. Skriv ut huvudstaden för ett specifikt land.

Övning 11#

Skapa ett spel där användaren anger en gissning mellan 0-100. Om gissningen är under det rätta svaret svarar programmet ”Lägre!” och om gissningen är under det rätta svaret svarar programmet ”Större!”. När gissningen är korrekt avslutas spelet. Låt det korrekta svaret genereras av en funktion, en gissning används av en funktion och allting ska sedan skrivas i en main(funktion).

8. Klasser#

Övning 8.1#

Skapa en klass Bil med attributen märke och modell.

Tips

Definiera en klass Bil och använd __init__ för att spara märke och modell.

Övning 8.2#

Lägg till en metod beskriv i Bil som skriver ut bilens märke och modell.

Övning 8.3#

Skapa en subklass Elbil som ärver från Bil och lägg till ett attribut batterikapacitet.

Övning 8.4#

Skapa en metod i Elbil som skriver ut batterikapaciteten.

Övning 8.5#

Skapa en klass Person med namn och ålder, samt en metod hälsa som skriver ut en hälsning.

Övning 8.6#

Skapa en klass Rektangel med attributen bredd och höjd, och en metod som räknar ut arean.

Övning 8.7#

Skapa en klass Cirkel med en metod för att räkna ut omkretsen (använd math.pi).

Övning 8.8#

Skapa en klass Bibliotek där vi kan lägga till och ta bort böcker i en lista.

Övning 8.9#

Skapa en klass Bankkonto där vi kan sätta in och ta ut pengar.

Övning 8.10#

Skapa en klass Spelkaraktär med hälsa och attackkraft, samt en metod för att attackera en annan karaktär.

Övning 8.11#

Skapa en klass Student med attributen namn, ålder och kurser. Lägg till metoder för att lägga till och ta bort kurser.

Övning 8.12#

Skapa en klass Bok med attributen titel, författare och antal_sidor. Lägg till metoder för att visa information och ändra antal sidor.

Övning 8.13#

Skapa en klass Restaurang med namn, meny och öppettider. Lägg till metoder för att lägga till rätter och ändra öppettider.

Övning 8.14#

Skapa en klass Smartphone med märke, modell och batterinivå. Lägg till metoder för att ladda batteriet och använda telefonen.

Övning 8.15#

Skapa en klass Spel med titel, genre och betyg. Lägg till metoder för att ändra betyget och visa information om spelet.

Övning 8.16#

Skapa en klass Flygplan med modell, kapacitet och aktuella_passagerare. Lägg till metoder för att lägga till och ta bort passagerare.

Övning 8.17#

Skapa en klass Musikspelare med låtar och nuvarande_låt. Lägg till metoder för att spela, pausa och byta låt.

Övning 8.18#

Skapa en klass Butik med namn, varor och priser. Lägg till metoder för att lägga till nya varor och ändra priser.

Övning 8.19#

Skapa en klass Bibliotekskort med kortnummer, ägare och lånade_böcker. Lägg till metoder för att låna och lämna tillbaka böcker.

Övning 8.20#

Skapa en klass Sportlag med namn, spelare och vinster. Lägg till metoder för att lägga till spelare och registrera vinster.

Spelövning#

Här kommer en större övning som innefattar att bygga ett spel med hjälp av flera klasser.

Steg 1#

Skapa en klass Karaktär med attribut som namn, level, hälsa och styrka.

  • Sätt den initiala hälsan till 100 och styrkan till 10.

Skapa ett specialattribut element som representerar åtminstone elementen, exempelvis Eld, Vatten och Jord, som har unika attribut.

  • En karaktär med elementen Vatten har 50% mer styrka mot en karaktär med elementen Eld.

  • En karaktär med elementen Jord gör 50% mer styrka mot en karaktär med elementen Vatten.

  • En karaktär med elementen Eld gör 50% mer styrka mot en karaktär med elementen Jord.

Steg 2#

Lägg till en metod lever som returnerar hälsan hos en karaktär.

Steg 3#

Skapa en metod beskriv som skriver ut karaktärens level, hälsa och styrka.

Steg 4#

Skapa subklassen Fiende som ärver attribut och metoder från Karaktär. Subklassen Fiende har en level, hälsa, styrka och element. Se till att den första fienden har en hälsa som är slumpad mellan 50 och 75 och skadan mellan 5-10. Attributet ska vara slumpmässiga.

Steg 5#

Skapa en metod beskriv som skriver ut fiendens level, hälsa och styrka. Printa även en rad med bindestreck längst ner!

Steg 6#

Lägg till en metod attackera som låter en karaktär attackera en annan karaktär och minska dess hälsa.

Spelet fungerar så att skadan du gör mot motståndaren slumpas mellan styrkan/2 - styrkan som din karaktär, och skadan mot dig slumpas mellan styrkan/2 - styrkan av fienden. Sedan låter man fienden attackera dig varannan gång och du attackera fienden den andra.Använd import random.

Viktigt att göra om skadan och hälsan till datatypen int!

Steg 7#

Skapa en def combat(spelare, fiende, level) funktion. Använd en while-loop för att låta spelet möta en fiende tills en karaktär har 0 i hälsa.

  • Om din karaktär har 0 i hälsa så har du förlorat och programmet avslutas.

  • Om du vinner ökar din level med 1 och du får två val: Antingen får du 50 % mer styrka, eller så får du öka din nuvaranda hälsa med 100.

Viktigt att göra om skadan och hälsan till datatypen int!

Anropa main(level) funktionen i slutet av if-satsen om du vinner. Main-funktionen bygger vi i steg 9.

Steg 8#

När du har vunnit mot en fiende ska dessutom den nya fiendens level öka. När fiendens level ökar ska styrkan och hälsan ökas med 25%. Återigen ska nästa monster skapas, men inom den nya intervallet där hälsan och styrkan har ökat med 25%.

Viktigt att göra om skadan och hälsan till datatypen int!

Steg 9#

Skapa en main(level=0) funktion där input från spelaren i form av 1 eller 2 används. I main-funktionen ska:

  • Karaktären beskrivas,

  • En ny fiende ska skapas och beskrivas.

  • Leveln ska ökas.

  • Ett val om man vill lämna spelet eller att fortsätta spela.

  • Om valet är 1, ska man möta en ny fiende i combat.

Steg 10#

Se över att spelet är balanserat, det betyder att spelet inte ska vara för lätt men inte heller för svårt! Det borde vara svårt att nå level 10.