Close menu
Close menu

Tunnistaudu

Kirjaudu

Etkö ole vielä jäsen?

Liity jäseneksi

Python

Grafik med Python IDLE och turtle/sköldpaddor.

Med turtle kan man lätt skapa konstverk
med enkel matematik och små algoritmer baserade
på rotation och translation samt färgläggning.

Låt eleverna experimentera – resultatet kan se ut så här.

Skärmbild från 2018-06-09 01-58-04.png

Exempel och uppgifter

Exempel 1-2
Exempel 3-5
Exempel 6-8
Exempel 9-11

Exempel och uppgifter

Innehåll 3-5

3. Intro
3.3. Strängar
3.4. Slingor
3.4.1 While
3.4.2 For
3.5.1. Enkla funktioner
3.5.2. Funktioners returvärden
3.6. Läxförhör
4. Projekt: Tal och operationer
4.1. Multiplikation och division
4.2. Jämna och udda tal
4.3. Gissa faktorer
4.4. Lösning med råstyrka
4.5. Faktorisering
4.6. Funktioner
4.7. Returvärden
4.8. Primtal
4.9. Slumptal
4.10. Talbaser
5. Projekt: Algebra
5.1. Formler
5.2. Talföljder
5.3. Prövning av ekvationer
5.4. Fibonacci
5.5. Egen talföljd
5.6. Euklides algoritm
5.7. Intervallhalvering
5.8. Numerisk lösning 1
5.9. Numerisk lösning 2
5.10. Kryptografi
5.11. Komplett kryptering

tillbaka⏎

3.1 Uppgift 1

Testa räkneoperationer i kommandotolken:

>>> 4 + 5
9
>>> 4 + 6 + 3
13
>>> 4 + 6 * 3
22
>>> (4 + 6) * 3
30

3.3A Exempel 1-5
# PIM-033A-E1-5v2.py # Exempel 1 a = input(”Skriv in ett tal:”) print(a) # Exempel 2 a = input(”Skriv in ett tal:”) print(a * 2) # Exempel 3 a = int(input(”Skriv in ett tal:”)) print(a) print(a * 2) # Exempel 4 a = 5 print(a) a = ”fem” print(len(a))

3.3B Exempel 1-5

# PIM-033B-E1-5.py # Exempel 1 a = 1 b = 2 print(a, b) # Exempel 2 a = int(input(”1. Skriv in ett tal mellan 1 och 10: ”)) if a > 5: print(”Du skrev in talet”, a) print(”Talet är större än 5!”) # Exempel 3 a = int(input(”2. Skriv in ett tal mellan 1 och 10:”)) if a == 5: print(”Talet är fem!”) # Exempel 4 a = int(input(”3. Skriv in ett tal mellan 1 och 10: ”)) if a == 5: print(”Talet är 5 !”) else: print(”Talet är inte 5 !”) # Exempel 4 if a != 5: print(”Talet är inte 5!”) # Exempel 5 alder = int(input(”Skriv in din ålder:”)) if alder > 65: print(”Du är pensionär!”) elif alder > 40: print(”Du är medelålders!”) elif alder > 18: print(”Du är myndig!”) elif alder > 12: print(”Du är tonåring!”) else: print(”Du är ett barn!”) manad = int(input(”Skriv in numret på din födelsemånad:”)) if (manad == 12 or manad < 3): print(”Du är född på vintern!”) elif (manad >= 3 and manad <= 5): print(”Du är född på våren!”) # Exempel 6 a = int(input(”Skriv in ett tal mellan 1 och 1000: ”)) if a > 9: print(”Talet är 10 eller större!”) if a > 99: print(”Talet är 100 eller större!”)

"""
Kap. 3.3 Uppgift 1

1. Skriv ett program där du ska mata in ett tal.

Programmet ska skriva ut kvadraten av
talet (det vill säga talet multiplicerat
med sig själv) med hjälp av exponentoperatorn **
Ex. 3**2 borde bli 9.


"""

####################################################

.tillbaka⏎ 3.3.2 Strängar

namn = input(”Vad heter du? ”) print(”Du heter”, namn) namn = input(”Vad heter du? ”) if namn == ”Anna”: print(”Du har Sveriges vanligaste tilltalsnamn!”) elif namn == ”Lars”: print(”Du har Sveriges vanligaste tilltalsnamn!”) namn = input(”Vad heter du? ”) if (namn == ”Anna” or namn == ”Lars”): print(”Du har Sveriges vanligaste tilltalsnamn!”)

.tillbaka⏎

"""

Kap. 3.3 Uppgift 2

1. Skriv ett program där du ska mata in ett ord.
Programmet ska sedan skriva ut om
ordet är kort (färre än 5 bokstäver)
eller långt (fler än 4 bokstäver).

2. Skriv ett program där du ska mata in ett hundnamn.
Programmet ska sedan ta reda på om namnet är ett av de
två vanligaste hundnamnen.

3. Skriv ett program där du ska mata aktuell månad och dag.
Programmet ska sedan skriva hur många dagar som gått sedan årsskiftet.

"""

####################################################

.tillbaka⏎

3.4. Slingor (Loops)

print(1)
print(2)

3.4.1 While

tal = 1 while tal <= 100: print(tal) tal = tal + 1

"""
3.4 Uppgift 1
 
1. Skriv ut alla tal från 1000 till 1111 med hjälp av while.
2. Skriv ut alla jämna tal från 0 till 1000 med hjälp av while.

"""
3.4.2 For

tal = 1 for tal in range(1, 10): print(tal)

"""
3.4 Uppgift 2

2. Modifiera programmet så att det skriver ut alla tal från 1 till 10.
"""

####################################################

.tillbaka⏎

3.5.1. Enkla funktioner

def jamforTal(a, b):
    if a > b:
        print("Det första talet är störst!")
    elif a < b:
        print("Det andra talet är störst!")
    else:
        print("Talen är lika stora!")

"""
3.4 Uppgift 2

1. Skriv en funktion som jämför två tal och talar om vilket av dem som är minst.
2. Skriv en funktion som undersöker vilket av två namn som är längst. Kom ihåg att du kan använda dig av den inbyggda funktionen len() för att ta reda på hur långt innehållet i en variabel är."
"""
####################################################

.tillbaka⏎

3.5.2. Funktioner med returvärden

def storstaTal(a, b):
 if a > b:
 return a
 else:
 return b"

"""
Uppgift
1. Skriv en funktion som tar två tal som argument och skickar tillbaka det minsta.
2. Skriv en funktion som tar två namn som argument och skickar tillbaka längden hos
det längsta."

"""

.tillbaka⏎

3.6. Läxförhör

Skriv ett läxförhörsprogram som prövar användarens kunskaper med hjälp av 3
frågor. Frågorna kan antingen gälla numeriska svar (alltså tal) eller text (strängar).
Skapa en variabel som håller reda på hur många rätt användaren har. Om
användaren gissar rätt ska du öka variabelns värde med 1. Efter de tre frågorna ska
du skriva ut hur många rätt användaren hade."
"""
####################################################

.tillbaka⏎

4.1. Projekt: Multiplikation och division"

tal1 = int(input(""Det första talet:""))
tal2 = int(input(""Det andra talet:""))
produkt = 0

tal1 = int(input(""Det första talet:""))
tal2 = int(input(""Det andra talet:""))
produkt = 0
raknare = 0
while raknare < tal1:
 produkt = produkt + tal2
 raknare = raknare + 1
 print(""Produkt="" + str(produkt))
print(produkt)"

"""
Uppgift
1. Skriv ett program som räknar ut division av heltal genom upprepad subtraktion.

Exempelvis kan du ta räkna ut 15/3 genom att se hur många gånger du kan
subtrahera 3 från 15 utan att talet blir mindre än 0.

2. Potenser kan ses som en upprepad multiplikation. Exempelvis är 2^3 = 2 · 2 · 2.
Skriv ett program som räknare ut tal1^tal2
"""

####################################################

.tillbaka⏎

4.2. Projekt: Jämna och udda tal
tal = 2
while tal < 100:
 tal = tal + 2
 print(tal)"

for tal in range(1, 101, 2):
 print(tal)"

"""
1. Skriv ut alla tal från 100 till 199 med hjälp av for.
2. Skriv ett program som listar alla udda tal från 1 till 101 med hjälp av for.
3. Skriv om programmet så att det skriver ut alla udda tal från 1 till 101 med hjälp av
while.
4. Skriv ett program som skriver ut alla tal som är delbara med 3 från 1 till 100.
Använd först for och därefter while.

.tillbaka⏎

"""

4.3. Projekt: Gissa faktorer    E slumptal = random.randint(1,100)

"""
Du ska skriva ett program där användaren ska få se ett slumptal från 1-200.
Användaren ska därefter ange två faktorer så att produkten av de två blir lika med
slumptalet.
Programmet ska fortsätta till användaren har gissat rätt 10 gånger.
När programmet slutar ska det skriva ut hur många gånger användaren gissade fel."
"""
4.4. Projekt: Problemlösning med råstyrka

for tal in range(1, 20):
 kvot = tal / 2
 if kvot == int(kvot):
 print (tal)

"""
1. Skriv ett program som hittar alla udda tal från 1 till 100 med hjälp av
råstyrkemetoden.
2. Skriv ett program som hittar alla tal delbara med 3 från 1 till 100 med hjälp av
råstyrkemetoden."
"""
####################################################

.tillbaka⏎

4.5. Projekt: Faktorisering
"""
4.5 faktorisering
"""
tal = 56
for faktor1 in range(1, 100):
 for faktor2 in range (1, 100):
     if tal == faktor1 * faktor2:
        print (faktor1, faktor2)

4.5 faktorisering (E2)
'''
tal = 56
for faktor1 in range(1, 100):
 for faktor2 in range (faktor1, 100):
     if tal == faktor1 * faktor2:
        print (faktor1, faktor2)"

"""
1. Hur stora tal kan du faktorisera med denna metod utan att det tar för lång tid?
2. Har du några ideer på hur programmet skulle kunna undvika att pröva alla tal? Du
behöver inte skriva någon kod, bara beskriva något eller några sätt!
3. Skriv om testet (if-satsen) så att det använder operatorn %.
4. Skriv om funktionen så att den letar efter faktorisering med tre faktorer.
"""
####################################################

.tillbaka⏎

4.6. Projekt: Funktioner

4.6 Funktioner (E1)

def jamnaTal(uppTill):
    for i in range(1, uppTill):
        if (i / 2) == int(i / 2):
            print(i)

jamnaTal(21)

####################################################

1. Skapa en funktion kallad uddaTal som skriver ut alla udda tal från 1 till ett värde
som skickas till funktionen.
2. Skriv en funktion som faktoriserar ett tal upp till en viss gräns. Faktoriseringen ska
ske med två tal.

def faktorisering(tal):

.tillbaka⏎

4.7. Projekt: Funktioner som ger svar

def kvadrera(tal):
 svar = tal * tal
 return svar

# Vi sparar värdet
kvadrat = kvadrera(4)
print(""Talet 4 har en kvadrat som är"", kvadrat)

# eller så här

print(""Talet 4 har en kvadrat som är"", kvadrera(4))"


"""
Uppgift
1. Skriv en funktion som räknar ut och skickar tillbaka värdet på tal1 upphöjt till tal2.
2. Skriv en funktion som räknar ut summan från 1 till argumentet och skickar tillbaka
det. Exempel: Du skickar in 4. Svaret ska då bli 10 eftersom 1 + 2 + 3 + 4 = 10.
3. Det finns ett matematiskt begrepp som heter fakultet. Det skrivs exempelvis 4!
vilket betyder att du ska multiplicera alla tal från 1 upp till det angivna talet. 4! = 1 · 2 ·
3 · 4 = 24. Skriv en funktion som räknar ut fakulteten till argumentet."

.tillbaka⏎

"""
4.8. Projekt: Primtal

# Exempel 1
def primtal(tal):
 for i in range(2, tal):
 if tal % i == 0:
 return False
 return True"

# Exempel 2
mitt_tal = 47
ar_tal_primtal = primtal(mitt_tal)
if ar_tal_primtal:
 print(mitt_tal, ""är ett primtal"")
else:
 print(mitt_tal, ""är inte ett primtal"")"

"""
Uppgift
1. Hur stora tal kan du undersöka utan att det tar för lång tid?
2. Kan du föreslå något effektivare sätt att undersöka om ett tal är ett primtal?
3. Är det alltid nödvändigt att undersöka alla tal upp till talet ?
"""

####################################################

.tillbaka⏎

4.9. Projekt: Slumptal
Exempel 1:

import random
raknare = 0
while (raknare < 10):
 slumptal = random.randint(1,100)
 print(slumptal)
 raknare = raknare + 1"

"""
Uppgift

Skapa ett program som låter användaren gissa ett tal mellan 1 och 100. Programmet
ska för varje gissning skriva ut om svaret var för lågt, för högt eller rätt. Om
användaren gissar rätt ska programmet skriva ut hur många gånger användaren var
tvungen att gissa.
Använd dig av while för att skapa en slinga. Slingan ska fortsätta tills gissningen är
lika med slumptalet.
Du bör också använda dig av en variabel som räknar gissningarna och som ökar med
ett varje gång användaren gissar."
"""

.tillbaka⏎

"""
4.10. Projekt: Talbaser

Uppgift
1. Skriv ett program som tar ett tal beskrivet i en annan angiven talbas och skriver ut
dess värde med vår talbas.
2. Skriv ett program som tar ett tal angivet i talbasen 10 och skriver ut det i en annan
angiven talbas."
"""

.tillbaka⏎

"""
5. Område: Algebra      

####################################################

.tillbaka⏎

5.1. Projekt: Formler

Exempel

def s(v, t):
 return v * t

# Hur långt kommer en bil med 70km/h på 8 timmar ?
print(""Bilen åker"", s(70, 8), ""km."")"

Uppgift
"""
1. Skriv ett program där användaren kan mata in hastigheten och tiden. Programmet
ska därefter skriva ut sträckan.
2. Skriv en funktion som räknar ut hastigheten om du vet tiden och sträckan. Skriv ett
program liknande det i uppgift 1.
3. Funktioner är också bra för enhetsomvandling. Skriv en funktion som omvandlar
kilometer i timmen (km/h) till meter per sekund (m/s)."

####################################################

.tillbaka⏎

"""
5.2. Projekt: Talföljder
Exempel
tal = 0
while tal < 100:
 tal = tal + 2
 print(tal)"

Uppgift

1. Skriv en funktion som skriver ut en valfri aritmetisk talföljd upp till det tal som
skickas som argument till funktionen.
2. Skriv en funktion som skriver ut en valfri geometrisk talföljd upp till det tal som
skickas som argument till funktionen."
"""

.tillbaka⏎

5.3. Projekt: Prövning av ekvationer

Exempel
def vl(x):
 return 13 * x - 9

print(vl(4) == 30)

Uppgift

1. Leta upp en ekvation som du löst där HL är ett tal (en konstant) och VL innehåller x
(eller någon annan variabel). Skriv ett program där användaren får mata in två tal, x
samt talet i HL. Lägg in VL i en funktion Programmet ska skriva ut om VL = HL."

####################################################

.tillbaka⏎

5.4. Projekt: Fibonacci
Exempel
# Fib A
a, b = 0, 1
while b < 1000:
 print(a, b, a + b)
 a, b = b, a+b"

# Fib B Hitta felet !
a, b = 0, 1
while b < 1000:
 print(a, b, a + b)
 a = b
 b = a+b"

# Fib C
a, b = 0, 1
while b < 1000:
 print(a, b, a + b)
 gamla_a = a
 a = b
 b = gamla_a + b"

"""
1. Förklara varför programmet Fib B inte fungerar som tänkt.
2. Skriv om algoritmen som en funktion kallad fibonacci(a, b).
3. Skriv en funktion som med hjälp av råstyrke-metoden undersöker om ett tal ingår i
fibonacci-talserien.
4. Sök på nätet efter några områden där fibonacci-tal förekommer eller används.
Beskriv dem.
"""

####################################################

.tillbaka⏎

5.5. Projekt: Egen talföljd

Hitta på en egen talföljd och beskriv den med hjälp av en funktion.
Skriv också en funktion som tar reda på om ett tal ingår i denna talföljd.

Exempel:
'''

def minTalfoljd():
 # kod som skriver ut talföljden
def ingarIMinTalfoljd(tal):
 if # test för att se om värdet på variabeln tal ingår i talföljden
 return True
 else:
 return False"
####################################################

.tillbaka⏎

5.6. Projekt: Euklides algoritm    E "def sgd(x, y):
 while x != y:
 if (x > y):
 x = x - y
 else:
 y = y - x
 return x
print(sgd(15, 6))

"""
Uppgift

1. Lägg till utskrifter så att du förstår och kan förklara vad som händer i algoritmen.
2. Sök på nätet och se om du kan hitta ännu kortare lösningar till sgd() (kallas för gcd
- greatest common divisor - på engelska).
3. (Svårare.) Versionen av Euklides algoritm som vi visade ovan kan ta många steg
på sig för stora tal. Vi kan istället ersätta det större talet med resten om vi dividerar
det med det mindre talet. Vi ska då stanna om vi får en rest som är lika med 0.

Skriv om algoritmen så att den arbetar på detta smartare sätt.
"""

.tillbaka⏎

5.7. Projekt: Intervallhalvering

import random
tal = random.randint(1,100)
gissning = 0
while gissning != tal:
 gissning = int(input(""Gissa ett tal:""))
 if gissning > tal:
 print(""Du gissade för högt!"")
 if gissning < tal:
 print(""Du gissade för lågt!"")
print(""Grattis! Du gissade rätt!"")"


Uppgift

1. Kör programmet ovan och pröva att gissa talet genom intervallhalveringsmetoden.
Anteckna hur många gånger du måste gissa. Hur många gånger måste du som högst
gissa?

2. Ändra i programmet så att du provar några andra intervall, exempelvis 1-25, 1-40,
1-1000.

Kan du hitta något samband mellan intervallets storlek och högsta antalet
gissningar?"

# En algoritm för att gissa tal. Datorn gissar ett tal som du tänker på.
# a och b anger start och slut på intervallet
a = 1
b = 100
Programmera i matematik av Staffan Melin 47
fraga = ""Tänk på ett tal mellan "" + str(a) + "" och "" + str(b)
tal = int(input(fraga))
resultat = """"
while resultat != ""R"":
 # Vi gissar på talet mitt i intervallet
 gissning = int((a+b)/2)
 print(""Datorn gissar"", gissning, ""."")
 resultat = input(""För högt (H), för lågt (L) eller rätt (R)?"")
 if resultat == ""H"":
 b = gissning - 1
 if resultat == ""L"":
 a = gissning + 1
print(""Grattis datorn!"")"

Uppgift
"""
1. Inför en räknare så att programmet i slutet skriver ut hur många gånger datorn
gissade.
2. Se efter hur många gånger du kan få datorn att gissa för samma intervall som du
själv använde när du gissade.

"""

.tillbaka⏎

"""
5.8. Projekt: Ekvationslösning med intervallhalvering 1

Exempel

Programmet kan bara hitta värdet på x om intervallet som den gissar i täcker denna 0-
punkt. Vi gissar i detta faller i intervallet -1000 till 1000.
Fundera på: Varför?

För att denna algoritm ska fungera måste variabeln svar börja med ett tal skiljt från 0.

Fundera på: Varför?
"""

a = -1000
b = 1000
svar = 1
# Denna ekvation har lösningen x = 2
def f(x):
 return x * x - x - 2
while svar != 0:
 gissning = int((a + b) / 2)
 svar = f(gissning)

 if svar < 0:
 a = gissning
 if svar > 0:
 b = gissning
print(""Lösning"", gissning)"
    U 1. Prova programmet. Vilka begränsingar ser du i detta sätt att lösa ekvationer?
####################################################

.tillbaka⏎

5.9. Projekt: Ekvationslösning med intervallhalvering 2    E "# Vi gissar inom intervallet -1000 - 1000
a = -1000
b = 1000
svar = 1 # ett tal != 0 som vi börjar med
# Denna ekvation har lösningen 1.5
def f(x):
 return x * 4 - x - 4.5
while abs(a - b) > 0.1:
 gissning = (a + b) / 2
 print(a, b, gissning)
 svar = f(gissning)
 if svar < 0:
 a = gissning
 if svar > 0:
 b = gissning
print(""Lösning"", gissning)"
    U "1. Pröva med andra ekvationer som du letar upp.
2. Pröva att ändra 0.1 till 0.01 eller ännu mindre. När börjar det ta för lång tid?"
####################################################

.tillbaka⏎

5.10. Projekt: Kryptografi   E "klartext = ""MATEMATIK""
kryptotext = """"
for bokstav in klartext:
 bokstav_nummer = ord(bokstav)
 bokstav_nytt_nummer = bokstav_nummer + 1
 krypto_bokstav = chr(bokstav_nytt_nummer)
 kryptotext = kryptotext + krypto_bokstav"
    U "1. Programmet kommer inte att förvandla bokstaven Z till A. Modifiera programmet så
att Z hanteras korrekt. Slå på nätet upp hur ”mod” fungerar i Python.
2. Skriv ett program där användaren får mata in ett tal och sedan en sträng i klartext.
Programmet ska förskjuta texten i alfabetet med så många steg som anges av
variabeln tal. Därefter ska det skriva ut den krypterade strängen.
3. Skriv ett program som tar en krypterad text och antalet förskjutningar och
återställer den till klartext. Eller kan du kanske använda programmet du skrev för att kryptera texten även till detta?
4. (Svårare.) Tänk dig att du får en krypterad text där du inte vet hur många steg
bokstäverna förskjutits. Hur kan du lösa ett sådant krypto?"

.tillbaka⏎

5.11. Projekt: Komplett kryptering   U "Genom exempelvis
>>> print(ord(""Å""))
197
kan du ta reda på ordningsnummer för de svenska tecknena åäöÅÄÖ.

Modifiera krypteringsalgoritmen i Projekt: Kryptografi så att den kan hantera både
gemener och svenska tecken. Lägg hela algoritmen i en funktion."

Innehåll 6-8

Innehåll 6-8

6. Område: Geometri
6.3. Projekt: Rektangelns omkrets och area
6.4. Projekt: Digitalkamera
6.5. Projekt: Bærtling
6.6. Projekt: π
6.7. Projekt: Cirkelns omkrets och area
6.8. Projekt: Volym
6.9. Projekt: Skala
6.10. Projekt: Pythagoras sats
6.11. Projekt: Rymddiagonal i kub
7. Projekt
7.1. Samband och förändring
7.2. Lån
7.3. Koordinatsystem
7.4. Linjediagram
7.5. Stolp- och stapeldiagram
7.6. Proportionalitet och linjära samband
7.7. Kast av boll
7.8. Räta linjens ekvation
8. Projekt: Sannolikhet och statistik
8.1. Sannolikhet
8.2. Träddiagram
8.3. Cirkeldiagram
8.4. Undersöka slumptal
8.5. Diagram
8.6. Spridningsmått och lägesmått
8.7.Kombinatorik
6. Område: Geometri    E "(Innan du gör detta projekt bör du ha gjort Python: Lektioner: Turtle.)

Skriv en funktion som ritar en månghörning.
 def ritaManghorning(horn)
Hur många hörn måste du ange för att månghörningen ska likna en cirkel?
Lägg till kod som låter användaren ange hur många hörn figuren ska ha och sedan
ritar den.
Beskriv hur din kod fungerar."
    U "1. Skriv ett program där användaren får mata in antal hörn i månghörningen.
Programmet ska sedan rita ut månghörningen.
Det ska därefter räkna ut vinkelsumman genom att använda sig av kunskapen att
varje triangel har vinkelsumman 180 grader.
Beskriv hur din kod fungerar.
2. Modifiera ditt program så att månghörningen delas in i trianglar"
####################################################

.tillbaka⏎

6.3. Projekt: Rektangelns omkrets och area     "1. Skriv ett program som går igenom alla värden på bredd från 10 till 90, där höjd är
100 - bredd. Omkretsen kommer alltså alltid att vara (bredd + höjd) · 2 = 200.
För varje kombination av bredd och höjd ska programmet rita ut kvadraten och räkna
ut dess area. Areans värde ska skrivas ut.
2. Modifiera programmet så att det håller reda på den största arean och skriver ut
denna innan programmet avslutas.
Vilka slutsatser kan du dra om rektangelns area och dess bredd och höjd?"
####################################################

.tillbaka⏎

6.4. Projekt: Digitalkamera    U "1. Ta reda på hur många pixlar din mobil fotograferar med. Hur många pixlar är det?
Minnet i en dator räknas vanligen i bytes, där en byte kan spara ett värde mellan 0 till
255.
I en dator (och i din mobil) lagras varje pixel vanligen som tre tal mellan 0 och 255.
Det gör att varje pixel kräver 3 bytes.
2. Skriv ett program där användaren anger bredd och höjd på bilden i antal pixlar.
Programmet ska sedan räkna ut hur stor bilden är räknat i bytes.
3. Ta reda på hur bilder lagras genom att söka på nätet.
I praktiken komprimeras bilder och sparas som en så kallad JPG-fil. Det gör att bilden
inte tar så mycket plats men å andra sidan försvinner en del information (som
vanligtvis inte kan uppfattas av ögat)."
    E "# Pythons Turtle-modul kan också ha färgvärden i intervallet 0 - 1.0. 
# För att Python alltid ska arbeta med värden från 0 - 255 så
# måste vårt program ha följande två rader i början:
fonster = turtle.Screen()
fonster.colormode(255)
# De figurer du skapar kan sedan fyllas med valfri färg.
padda.begin_fill()
padda.fillcolor(255, 127, 0)
padda.forward(100)
padda.left(120)
padda.forward(100)
padda.left(120)
padda.forward(100)
padda.left(120)
padda.end_fill()"
    E "import turtle
fonster = turtle.Screen()
fonster.colormode(255)
padda = turtle.Turtle()
padda.speed(""fastest"")
def ritaFigur(bredd, hojd):
 padda.forward(bredd)
 padda.left(90)
 padda.forward(hojd)
 padda.left(135)
 padda.forward(hojd)
 padda.left(135)
for b in range(10, 100, 5):
 h = 100 - b
 # varje färg ska räknas ut som ett värde
 # som hamnar mellan 0 till 255
 farg_r = 2 * b
 farg_g = 2 * b
 farg_b = b
 padda.begin_fill()
 padda.pencolor(farg_r, 255 - farg_g, farg_b)
 padda.fillcolor(255 - farg_r, farg_g, farg_b)
 ritaFigur(b, h)
 padda.end_fill()"
    U "Skapa nu din egen konst! Inspireras av exemplet men skapa gärna något eget!
Beskriv hur din kod fungerar."
####################################################

.tillbaka⏎

6.6. Projekt: π

      "Skriv ett program som räknar ut pi med Leibniz formel. Lägg beräkningen i en funktion
som tar antalet bråk som indata"
      "Skriv ett program som räknar ut pi med Wallis formel. Lägg beräkningen i en funktion
som tar antalet tal i täljaren (eller nämnaren) som indata."
      Skriv ett program som räknar ut pi med Eulers formel. Lägg beräkningen i en funktion som tar antalet bråk som indata.
####################################################

.tillbaka⏎

6.7. Projekt: Cirkelns omkrets och area    E "import turtle
padda = turtle.Turtle()
padda.circle(50)"
    U "Om du vill använda dig av π så kan du importera modulen math.

import math
print(math.pi)

Skriv ett program som
1. har en funktion som ritar ut en kvadrat med omkretsen x
2. har en funktion som ritar ut en cirkel med omkretsen x
Kan du få programmet att rita ut kvadraten och cirkeln med samma mittpunkt?"
    U "Vilka av de två figurerna (med samma omkrets) har den största arean? Bygg ut ditt
program så att det räknar och skriver ut de två areorna.
Med en viss längd på ett staket, vilken av de två formerna (kvadrat och cirkel)
inhägnar det största markområdet?"

.tillbaka⏎

6.8. Projekt: Volym    U "Ta reda på vilken area och volym ett rätblock har.
Ta reda på vilken area och volym ett klot har.
Du har ett byggmaterial som kan täcka 10 m2
. Med vilken form (rätblock eller klot) kan
du innesluta den största volymen?"
####################################################

.tillbaka⏎

6.9. Projekt: Skala    U "Skriv ett program som frågar användaren efter längdskalan och därefter räknar och
skriver ut areaskalan och volymskalan."
####################################################

.tillbaka⏎

6.10. Projekt: Pythagoras sats   U "Skriv ett program och en funktion
 def triangelRatvinklig(a, b, c):
som returnerar True om triangeln är rätvinklig, det vill säga om Pythagoras sats
stämmer, annars False."
####################################################

.tillbaka⏎

6.11. Projekt: Rymddiagonal i kub    U "Skapa en funktion som räknar ut rymddiagonalen för en kub med sidan a.
Ett tips är att lägga in formeln för Pythogars sats i en funktion."
####################################################

.tillbaka⏎

7. Område: Samband och förändring      
    U "Skriv ett program där användaren får ange delen och det hela. Programmet ska
därefter skriva ut hur många procent delen är. Svaret ska skrivas både i decimal- och
procentform."
####################################################

.tillbaka⏎

7.2. Projekt: Lån    U "Skriv ett program där användaren får ange årsräntan på ett lån samt hur många år
lånet är på.
1. Anta att ingen amortering sker. Hur mycket växer lånet?
2. Modifiera programmet så att användaren kan ange en fast amortering (avbetalning)
per år. Beräkna och skriv ut hur lånet förändras över åren tills det är betalt.
3. Modifiera programmet så att användaren kan ange en procentuell amortering
(avbetalning) per år. Beräkna och skriv ut hur lånet förändras över åren tills det är
betalt."
####################################################

.tillbaka⏎

7.3. Projekt: Koordinatsystem    E 

import turtle
padda = turtle.Turtle()
def ritaKoordinatsystem(bredd, hojd):
 padda.penup()
 padda.goto(-bredd, 0)
 padda.pendown()
 padda.goto(bredd, 0)
 padda.penup()
 padda.goto(0, -hojd)
 padda.pendown()
 padda.goto(0, hojd)
ritaKoordinatsystem(200, 200)"

####################################################
padda.penup()
padda.goto(x, y)
padda.pendown()
padda.dot(5) # 5 är storleken på punkten"
####################################################
def ritaPunkt(x, y):
 padda.penup()
 padda.goto(x, y)
 padda.pendown()
 padda.dot(5)"
ritaPunkt(50, 50)
####################################################
    U "1. Skriv ut ett program som ritar ett koordinatsystem och sätter ut punkterna (45, 127),
(3, 9), (-70, -190).
####################################################
2. Skriv en funktion
 def ritaLinje(x1, y1, x2, y2)
som ritar en linje från punkt (x1, y1) till punkt (x2, y2).
####################################################
3. Skriv om ditt program så att det kan hantera skala. Skala ligga i en variabel,
exempelvis
 skala = 100
vilket motsvarar skala 1:100.

Programmet ska då kunna skriva ut exempelvis punkten (15000, 10000) så att den
hamnar i koordinatsystemet (på skärmen)."
      Python: Lektioner: Listor.
####################################################

.tillbaka⏎

7.4. Projekt: Linjediagram   U "1. Skriv ett program som ritar ut ett koordinatsystem och ritar ut följande punkter som
ska lagras i en lista: (-137, -137), (-50, 50), (137, 137), (50, -50).
2. Modifiera ditt program så att det även drar streck mellan punkterna. I vilken ordning
måste punkterna ligga för att linjen ska bli korrekt?
Du har nu ett program som kan rita linjediagram.
3. Modifiera ditt program så att det efterfrågar x- och y-koordinater från användaren,
lagrar dem i en lista och sedan ritar ut dem och drar en linje mellan dem.
Hur ska du hantera att punkterna kanske kommer i ”fel” ordning?"
####################################################

.tillbaka⏎

7.5. Projekt: Stolp- och stapeldiagram   U "1. Skriv ett program som utifrån en lista med värden skriver ut ett stolpdiagram.
2. Skriv ett program som utifrån en lista med värden skriver ut ett stapeldiagram."
####################################################
7.6. Projekt: Proportionalitet och linjära samband    U "Skriv ett program som ritar ut ett koordinatsystem och därefter ritar ut ett linjärt
samband i detta.
Programmet ska exempelvis kunna rita ut kurvan
y = 4 · x"
####################################################

.tillbaka⏎

7.7. Projekt: Kast av boll   E "1. Skriv om denna formel som en funktion i Python.
 def kastparabel(t):
2. Skriv ett program som ritar upp ett diagram och därefter ritar ut bollens höjd som en
funktion av tiden.
Tips! Om du ritar ett diagram med storleken 200 x 200 så bör du dividera tiden med
100 och multiplicera höjden med 100."
####################################################

.tillbaka⏎

7.8. Projekt: Räta linjens ekvation    U "Du har två punkter (50, 20) och (40, 90).
1. Beräkna räta linjens ekvation för dessa två punkter.
2. Rita ett koordinatsystem, sätt ut de två punkterna samt rita kurvan för ekvationen."
8. Område: Sannolikhet och statistik      
####################################################

.tillbaka⏎

8.1. Projekt: Sannolikhet    E slumptal = random.randint(1, 6)
    U "1. Skriv ett program som slår en tärning 100 gånger och håller reda på hur många
gånger det blir en 1:a, 2:a och så vidare. Skriv ut resultaten som totaler och som
procent. Tips: Skapa 6 olika variabler som håller reda på hur ofta det blir en 1:a, en
2:a och så vidare.
2. Visa fördelningen från 1-6 i ett stolpdiagram."
####################################################

.tillbaka⏎

8.2. Projekt: Träddiagram    U "Skriv ett program som konstruerar ett träddiagram utgående från att du slinglar slant.
Lägg allt i en funktion som har antalet kast som argument.
Exempel (A = krona, B = klave)
(A: 1/2) (B: 1/2)
(A+A: 1/4) (A+B: 1/4) (B+A: 1/4) (B+B: 1/4)
(A+A+A: 1/8) (A+A+B: 1/8) ..."
####################################################

.tillbaka⏎

8.3. Projekt: Cirkeldiagram      "Du har 5-10 värden i en lista.
1. Utifrån denna lista ska du skapa en tabell med de olika värdenas relativa frekvens.
2. Skapa även ett cirkeldiagram med frekvenserna som grund.
Läs mer om hur du kan använda turtle.circle() för att göra tårtbitar:
https://docs.python.org/3.3/library/turtle.html?highlight=turtle#turtle.circle."
####################################################

tillbaka⏎

8.4. Projekt: Undersöka slumptal   E "Att skapa ett uppslagsverk:
slumptal = {}
Du bör därefter nollställa uppslagsverket för tärningsslag 1 till 6:
raknare = 0
while raknare < 6:
 raknare = raknare + 1
 slumptal[raknare] = 0
Om du vill öka räknaren för ett slumptal:
tal = random.randint(1,6)
slumptal[tal] = slumptal[tal]+1"
####################################################
    U 1. Skriv ett program som skapar 1000 slumptal från 1 till 6 och lägger in deras frekvens i uppslagsverket. 2. Skriv ut antalet som en 1:a, 2:a och så vidare förekom. 3. Skriv ut förekomsten som ett procenttal. 4. Räkna ut medelvärdet. 5. Prova att öka antalet kast med tärningen från 1000 till något högre och se om frekvensen blir mer jämnt fördelad.
####################################################

tillbaka⏎

8.5. Projekt: Diagram    U "Genomför Projekt: Undersöka slumptal och presentera information i form av stapeldiagram som du gör med Turtle. Lägg ritandet av en stapel i en funktion så att du kan återanvända programkoden.

http://interactivepython.org/runestone/static/thinkcspy/Functions/ATurtleBarChart.html"
####################################################

tillbaka⏎

8.6. Projekt: Spridningsmått och lägesmått   U "1. Gör en undersökning i din klass för att skapa ett underlag till denna övning.
Undersökningen kan gälla exempelvis föräldrarnas ålder.
2. Skriv ett program som räknar ut olika mått: Medelvärde, median, variationsbredd,
kvartiler.
3. Skapa ett lådagram som visar resultaten av din undersökning.

Python programmering i matematiken

Euklides algoritm (rekursivt) för att hitta största gemensamma delare.

Samma visualiserat

Ett exempel på Python3 kod:

# Pascals triangel 
#
n = 10
rad = [1,0]
for _ in range(n+1): ## upprepa n+1 gånger
. . print(rad[:-1]) ## skriv ut listan (utom nollan)
# addera elementvis ”raden och 0” till ”0 och raden” 
. . rad=[sum(par) for par in zip(rad,rad[::-1])]
# lägg till en nolla i slutet av listan.
. . rad.append(0)
Koden ger följande utskrift 
[1]
[1, 1]
[1, 2,  1]
[1, 3,  3,  1]
[1, 4,  6,  4, 1]
[1, 5, 10,  10,  5, 1]
[1, 6, 15,  20,  15, 6, 1]
[1, 7, 21,  35,  35,  21, 7,  1]
[1, 8, 28,  56,  70,  56,  28,  8,  1]
[1, 9, 36,  84, 126, 126,  84,  36,  9, 1]
[1,10, 45,130, 210, 252, 210, 130,  45, 10, 1]

Kan testas ONLINE (kopiera och klistra in koden) tex. här

# Sierpinskis triangel 
n = 15
rad = [1,0]def printrad(rad):
. . s=””
. . for i in rad[:-1]:
. .  . . s+=” O”[i%2]
. . print(s)for _ in range(n+1):
. . printrad(rad)
. . rad=[sum(par) for par in zip(rad,rad[::-1])]
. . rad.append(0)
# Enda skillnaden är att vi printar ut en textsträng (string)
# där udda tal är ”O” och jämna ” ”
# skriv ut istället för raden.
Koden ger följande utskrift.

O
OO
O O
OOOO
O   O
OO  OO
O O O O
OOOOOOOO
O       O
OO      OO
O O     O O
OOOO    OOOO
O   O   O   O
OO  OO  OO  OO
O O O O O O O O
OOOOOOOOOOOOOOOO

 

 

Länkar

 

PIM