| {{ 'ml-lesson-number-slides' | message : article.intro.bblockCount }} |
| {{ 'ml-lesson-number-exercises' | message : article.intro.exerciseCount }} |
| {{ 'ml-lesson-time-estimation' | message }} |
I Python finns ett brett utbud av matematiska funktioner. En del kan dock inte användas direkt utan måste importeras, alltså hämtas in, först. På den här sidan kommer du träna på olika sorters beräkningar, avrundningar och att importera funktioner.
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))
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 programmering är det ofta användbart att använda heltalsdivision, alltså division där man delar upp resultatet i en heltalskvot och en rest. Om man t.ex. delar 7 med 3 får man heltalskvoten 2 och resten 1 eftersom det går 2 hela 3:or i 7 och så blir 1 över.
//
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.
32 % 5
, vilket ger resultatet 2
eftersom det blir 2 över om man delar 32 med 5.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.
abs()
abs(-35)
beräknas ∣−35∣ och man får det positiva talet 35
som resultat.int()
och float()
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
.sum()
sum([1, 2, 3])
resultatet 6
.len()
3
om man skriver len([1, 2, 3])
.min()
och max()
[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
används till mer avancerade matematiska beräkningar i Python.
math
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
Antag att alla vinklar ska vara i grader och använd omvandlingsfunktionerna degrees()
och radians()
så att sinus
blir 1 och vinkel2
blir 180 i beräkningarna ovan.
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