Logga in
| 8 sidor teori |
| 12 Uppgifter - Nivå 1 - 3 |
| Varje lektion är menad motsvara 1-2 lektioner i klassrummet. |
import math print(math.pi) x = 19.7531
print(math.sqrt(x))
print(round(x,1)) en_lista = [-7, 2, 19, 3]
print(max(en_lista))
print(sum(en_lista))
print(len(en_lista))
Kan du lista ut vad kodraderna ovan gör? Ändra värdena i x
och en_lista
för att se hur resultatet påverkas. Vad gör tror du ettan på rad 7 gör? Vad händer om första raden tas bort?
I den här lektionen går vi igenom följande begrepp:
//
mellan täljaren och nämnaren. Om man t.ex. skriver 32 // 5
får man resultatet 6
eftersom det finns 6 hela 5:or i 32. kvot = 32 // 5
print(kvot)
För att beräkna resten man får vid heltalsdivision använder man modulo-operatorn. I Python skrivs den som ett procenttecken mellan täljaren och nämnaren, t.ex. 32 % 5
, vilket ger resultatet 2
eftersom det blir 2 över om man delar 32 med 5.
rest = 32 % 5
print(rest)
print("Kvot:", 23 // 12, "Rest:", 23 % 12)
print("Kvot:", 3001 // 103, "Rest:", 3001 % 103)
print("Kvot:", 87178291199 // 115249, "Rest:", 87178291199 % 115249)
Använd operatorn //
för kvoten och %
för resten.
För att beräkna heltalskvoten använder vi operatorn //
mellan täljaren och nämnaren, alltså 23 // 12
. På samma sätt använder vi operatorn %
för att beräkna resten och skriver 23 % 12
. Vi lägger även till några extra utskrifter så att vi vet vad det är som skrivs ut.
print("Kvot:", 23 // 12, "Rest:", 23 % 12)
>
Kvot: 1 Rest: 11
Genom att kopiera denna rad och byta ut värdena kan vi återanvända koden och göra samma sak för de två andra divisionerna.
print("Kvot:", 23 // 12, "Rest:", 23 % 12)
print("Kvot:", 3001 // 103, "Rest:", 3001 % 103)
print("Kvot:", 87178291199 // 115249, "Rest:", 87178291199 % 115249)
>
Kvot: 1 Rest: 11
Kvot: 29 Rest: 14
Kvot: 756434 Rest: 29133
I Python finns många inbyggda funktioner som kan vara användbara. Dessa kan t.ex. användas för att göra olika matematiska beräkningar. Pythons nummerfunktioner som abs()
, int()
och float()
omvandlar enskilda värden eller konverterar mellan olika typer.
Funktioner för tal | |
---|---|
abs()
|
Beräknar absolutbeloppet av argumentet. Skriver man t.ex. abs(-35) beräknas ∣−35∣ och man får det positiva talet 35 som resultat.
|
int() och float()
|
Konverterar värden till datatypen heltal respektive flyttal. Dessa kan man bland annat använda för att konvertera strängar till värden man kan räkna med. T.ex. får man heltalet 23 om man skriver int('23') . Det är viktigt att tänka på att int() struntar i eventuella decimaldelar av ett tal, så int(2.94) ger resultatet 2 .
|
Listfunktioner som sum()
, len()
, min()
och max()
analyserar samlingar som helhet och beräknar sammanlagda egenskaper.
Funktioner för listor | |
---|---|
sum()
|
Används för att beräkna summan av ett antal värden i en lista. Exempelvis ger sum([1, 2, 3]) resultatet 6 .
|
len()
|
Använder man detta kommando på en lista svarar det listans längd, alltså antalet element i listan. T.ex. får man resultatet 3 om man skriver len([1, 2, 3]) .
|
min() och max()
|
Används för att hitta det minsta respektive största värdet i en lista. I listan [1, 2, 3] får man exempelvis ut 1 om man skriver min([1, 2, 3]) och 3 om man skriver max([1, 2, 3]) .
|
En modul kan också kallas bibliotek
eller paket
. Det är kod man kan läsa in i sitt program för att få tillgång till fler funktioner. I Python finns t.ex. modulen math
, som innehåller matematiska funktioner, och matplotlib
, med funktioner för att rita grafer och diagram. För att importera, dvs. läsa in, en modul skriver man import
överst i programmet.
import math
Funktioner från modulen kan sedan användas var som helst i programmet genom att skriva modulens namn följt av en punkt och funktionens namn.
import math
print(math.sqrt(9))
>
3.0
math
- modul
Modulen math
används till mer avancerade matematiska beräkningar i Python.
pi
, e
sqrt()
exp()
log()
log(100, 10)
ger t.ex. tiologaritmen av 100.radians()
degrees()
sin()
, cos()
, tan()
asin()
, acos()
, atan()
I trigonometrin får man lära sig att sin(90∘)=1 och att arccos(−1)=180∘. Pythons funktioner sin()
och acos()
räknar dock inte vinklar i enheten grader, utan i radianer. Det är viktigt att tänka på detta när man skriver program, så att man inte får helt fel värden.
import math
vinkel1 = 90
sinus = math.sin(vinkel1)
print(sinus)
>
0.8939966636005579
import math
cosinus = -1
vinkel2 = math.acos(cosinus)
print(vinkel2)
>
3.141592653589793
degrees()
och radians()
så att sinus
blir 1 och vinkel2
blir 180 i beräkningarna ovan.
import math
vinkel1 = math.radians(90)
sinus = math.sin(vinkel1)
print(sinus)
import math
cosinus = -1
vinkel2 = math.degrees(math.acos(cosinus))
print(vinkel2)
Använd radians()
för att omvandla grader till radianer och degrees()
för att omvandla radianer till grader.
Grader och radianer är olika enheter att mäta vinklar i, på samma sätt som t.ex. ett avstånd kan mätas i både cm och tum. För att beräkningarna ska fungera som förväntat måste vi ta hänsyn till de olika enheterna. Grader omvandlas till radianer med radians()
, och den första vinkeln kan därför skrivas om på det här sättet.
import math
vinkel1 = math.radians(90)
sinus = math.sin(vinkel1)
print(sinus)
>
1.0
Nu får vi rätt sinusvärde. Den andra vinkeln att omvandla är resultatet av beräkningen math.acos(cosinus)
, eftersom funktionen acos()
svarar med vinklar i radianer. För att omvandla radianer till grader används degrees()
.
import math
cosinus = -1
vinkel2 = math.degrees(math.acos(cosinus))
print(vinkel2)
>
180.0
round()
För att avrunda värden i Python använder man kommandot round()
och skriver det tal man vill avrunda innanför parenteserna.
print(round(2.75))
>
3
Som standard avrundas värdet till ett heltal, men genom att lägga till ett extra argument kan man välja hur man avrundar. Argumentet anger hur många steg från decimaltecknet avrundningen sker, där positiva tal anger steg till höger och negativa tal anger steg till vänster. T.ex. avrundar man till hundradelar om argumentet är 2 och till tiotal om det är −1.
print(round(1786.1314, 2))
print(round(1786.1314, -1))
>
1786.13
1790.0
På grund av hur man har valt att avrundning ska fungera i Python och hur decimaltal lagras kan man inte lita på att avrundningen exakt kommer att följa de avrundningsregler man är van vid. Oftast stämmer det, men man får t.ex. resultatet 2
om man skriver round(2.5)
. För att alltid avrunda uppåt eller nedåt använder man funktionen ceil
respektive floor
från modulen math
.
import math
print(math.ceil(3.14159))
print(math.floor(2.71828))
>
4
2
Skriv kod för att utföra följande beräkningar. Anta att modulen math
redan är importerad.
Beräkna 2⋅9.
Beräkna resten när man gör en heltalsdivision mellan 123456 och 75.
Avrunda 71 till 3 decimaler.
För att beräkna kvadratrötter använder man funktionen sqrt()
från modulen math
. För att komma åt funktionen måste man först skriva namnet på modulen följt av en punkt och sedan namnet på funktionen, alltså math.sqrt()
. Man sätter det man vill dra roten ur mellan parenteserna, så för att göra beräkningen skriver vi
2 * math.sqrt(9)
.
Det finns två operatorer för att göra heltalsdivisioner: //
för själva heltalsdivisionen och %
för den rest man får. Vi är intresserade av resten, så vi sätter in operatorn %
mellan täljare och nämnare för att utföra beräkningen.
123456 % 75
För att avrunda använder man funktionen round()
och skriver det man vill avrunda inom parenteserna. Skriver man inget annat avrundas det till ett heltal. Vi vill dock avrunda till 3 decimaler, och då måste man lägga till ytterligare ett argument. Det gör man genom att skriva ett komma efter det man vill avrunda och sedan hur många decimaler man vill ha. Vi ska alltså skriva
round(1/7, 3)
.Vad gör kodraderna?
math.sqrt(5)
round(math.pi, 5)
math.log(sum([6, 7, 8, 9]), 10)
Raden börjar med ordet math
vilket innebär att vi använder modulen math
. Punkten efter betyder att vi använder den funktion från math
som anges efter punkten, vilket är sqrt
. Det en funktion för att beräkna kvadratroten ur ett tal och den används på talet 5, så vad kodraden gör är att beräkna sqrt(5).
På den här raden använder vi avrundningsfunktionen round()
på argumenten math.pi
och 5
. Första argumentet är det man vill avrunda, vilket i det här fallet är konstanten π tagen från modulen math
. Det andra argumentet är hur många decimaler man vill avrunda till, så koden avrundar alltså π till 5 decimaler.
Här använder man funktionen log()
från modulen math
för att beräkna en logaritm. I det första argumentet använder man sum()
på en lista vilket ger summan av alla element i listan. Det andra argumentet anger vilket logaritm det är frågan om, och i det är fallet är det tiologaritmen. Koden beräknar alltså tiologaritmen för summan av 6, 7, 8 och 9, dvs. lg(30).
Skriv ett program som tar ett tal x och skriver ut roten ur det, avrundat till en decimal.
Programmet ska göra två saker: Först beräkna sqrt(x), och sedan avrunda svaret. Kvadratroten beräknas med funktionen sqrt()
, och för att använda den måste vi först importera modulen math
. Vi måste också bestämma ett x-värde att räkna på, t.ex. 21.
import math x = 21
Nu kan vi beräkna roten ur x, som vi lagrar i variabeln rot
.
import math x = 21 rot = math.sqrt(x)
Talet ska nu avrundas, vilket vi gör med kommandot round()
. I parenteserna anger vi dels rot
, och dels 1
för att vi vill avrunda till 1 decimal. Vi lagrar svaret i en ny variabel, avrundat
.
import math x = 21 rot = math.sqrt(x) avrundat = round(rot, 1)
Slutligen ska vi skriva ut svaret, så vi skickar avrundat
till funktionen print()
.
import math x = 21 rot = math.sqrt(x) avrundat = round(rot, 1) print(avrundat)
> 4.6
Skriv ett program som skriver ut det största av 10x och lg(x) för ett positivt tal x. Testa programmet för x=2 och x=0.1.
Vi kommer att behöva kommandot log()
från modulen math
för en av beräkningarna, så vi måste börja med att importera math
. Vi lägger också till variabeln x
som vi ska göra beräkningarna för, och tilldelar den det första värdet som ska testas: 2.
import math x = 2
Sedan beräknar vi de två värdena vi ska jämföra. För att beräkna 10^x skriver vi 10**x
och för lg(x), alltså tiologaritmen av x, använder vi log()
. I den anger man först det värde man vill beräkna logaritmen för, alltså x, och sedan den logaritm man vill beräkna, vilket är 10 i det här fallet. Vi skriver alltså math.log(x, 10)
. Vi lägger in båda dessa värden i en lista.
import math x = 2
varden = [10**x, math.log(x, 10)]
Nu kan vi använda funktionen max()
, som väljer ut det största elementet i en lista, för att hitta vilket av våra värden som är störst. För att faktiskt kunna se vad detta värde är sparar vi det i en variabel och lägger till en rad som skriver ut den.
import math x = 2
varden = [10**x, math.log(x, 10)] storsta_varde = max(varden) print(storsta_varde)
> 100
Vi får alltså resultatet 100 när x = 2
. Vi byter till x = 0.1
för att testa det andra x-värdet.
import math x = 0.1
varden = [10**x, math.log(x, 10)] storsta_varde = max(varden) print(storsta_varde)
> 1.2589254117941673
För x = 0.1
får vi istället utvärdet 1.2589254117941673.
Gert har skrivit ett program för att beräkna omkretsen av en kvadrat givet att man känner till dess area.
area = 75
sida = sqrt(area)
omkrets = 4 * sida
print(omkrets)
Hans program fungerar dock inte. Undersök varför och skriv om programmet så det fungerar.
Vi börjar med att köra programmet för att se vilken sorts fel vi får.
area = 75 sida = sqrt(area) omkrets = 4 * sida print(omkrets)
> Traceback (most recent call last):
File "python", line 2, in <module>
NameError: name 'sqrt' is not defined
Det blir ett fel på andra raden, när vi använder funktionen sqrt()
. Det går inte att hitta funktionen, och det är på grund av att den finns inne i modulen math
. För att använda en sådan funktion måste man först importera den i början av programmet.
import math area = 75 sida = sqrt(area) omkrets = 4 * sida print(omkrets)
> Traceback (most recent call last):
File "python", line 3, in <module>
NameError: name 'sqrt' is not defined
Detta ger dock fortfarande ett fel, och det är på grund av att vi också måste skriva math.
framför funktionsnamnet. Då säger man att man vill använda funktionen sqrt
som finns inne i modulen math
. Nu fungerar programmet.
import math area = 75 sida = math.sqrt(area) omkrets = 4 * sida print(omkrets)
> 34.64101615137755
Ett kringresande tivoli tar 20 kr för varje åk i berg- och dalbanan. Gör ett program som beräknar och skriver ut antal gånger du kan åka genom att använda variabeln pengar
, som är ett helt antal kronor. Skriv även ut hur mycket pengar som sedan finns kvar.
Operatorn //
gör en division och plockar ut heltalskvoten. T.ex. skulle 35 // 20
ge hur många hela gånger 20 får plats i 35, vilket är 1 gång. Heltalsdivisionen pengar // 20
ger då hur många gånger 20 får plats i den pengamängd vi har, vilket är antalet åk som kan göras.
pengar = 532 antal_ak = pengar // 20 print(antal_ak)
> 26
För 532 kr kan man alltså åka 26 gånger i berg- och dalbanan. Pengarna som blir kvar är den rest som divisionen ger. Den resten ges av operatorn %
.
pengar = 532 antal_ak = pengar // 20 pengar_kvar = pengar % 20 print(antal_ak, pengar_kvar)
> 26 12
För 532 kr kan man alltså åka 26 gånger och får då 12 kr över. Detta räcker som lösning, men för prydlighetens skull förtydligar vi utskriften med format()
.
pengar = 532 antal_ak = pengar // 20 pengar_kvar = pengar % 20 print('För {} kr kan man åka {} gånger och få {} kr över.'.format(pengar, antal_ak, pengar_kvar))
> För 532 kr kan man åka 26 gånger och få 12 kr över.