Tietokoneiden näyttöjä, joissa näkyy kuvaa automaatiolaboratorion laitteistosta. Monitoreiden takana näkyy sama laitteisto kuin kuvissa.

timohei.net / Opintojaksot / Opintojaksot / Soveltava ohjelmointi / Python-ohjelmointi /
Matemaattiset operaatiot

Pythonissa matemaattiset perustoiminnot ovat kieleen sisäänrakennettuna. Lisäksi Pythonissa on laajennuksina käytettävissä matemaattisia moduuleita, kuten math-moduuli ja sen kompleksilukuja käyttävä vastine cmath sekä useita erikoistuneita matemaattisia kirjastoja.

Komentotulkkia voi käyttää sellaisenaan yksinkertaisena laskimena. Komentotulkissa ei välttämättä tarvitse edes käyttää print-komentoa, vaan laskutoimitukset voi syöttää tulkkiin sellaisenaan:

>>> 2 + 2
4
>>> 50 - 5*6
20
>>> (50 - 5.0*6) / 4
5.0
>>> 8 / 5.0
1.6

Peruslaskutoimitukset

Peruslaskutoimitukset toimivat kuten odottaa saattaa. Laskujärjestys on yleisten sääntöjen mukainen, eli kerto- ja jakolaskut suoritetaan ensin ja sitten yhteen- ja vähennyslaskut, kaikki vasemmalta oikealle. Sulkuja voi käyttää laskutoimitusten ryhmittelyyn ja laskujärjestyksen muuttamiseen.

Peruslaskutoimitusten lisäksi on käytettävissä myös tasajako eli katkaiseva jakolasku //, jakojäännös eli modulo % ja potenssiin korotus x**y.

Jakolasku toimii Python 2:ssa ja 3:ssa eri tavalla

Jakolaskun tulos on Python 3:ssa (eli mm. versiossa 3.8.0) aina liukuluku eli tyyppiä float - vaikka kumpikin jakolaskun operandi olisi kokonaisluku (int). Tämä voi tuntua itsestään selvältä, mutta Python 2:ssa (eli esimerkiksi versiossa 2.7.13) kahden kokonaisluvun (int) jakolasku antoi tulokseksi kokonaisluvun (int). Kokonaisluku jaettuna liukuluvulla antaa Python 2:ssakin tulokseksi liukuluvun:

Python 3.8.0 >>> 10/3    # Python 3:ssa jakolaskun tulos on liukuluku...
3.3333333333333335
Python 3.8.0 >>> 10/3.0  # ...riippumatta operandien tyypeistä.
3.3333333333333335
Python 2.7.13 >>> 10/3   # Python 2:ssa kahden kokonaisluvun välinen
3                        # jakolasku antaa tulokseksi kokonaisluvun.
Python 2.7.13 >>> 10/3.0 # Jos yksikin operandeista on liukuluku,
3.3333333333333335       # on tuloskin liukuluku.

Tasajako

Tasajako tarkoittaa jakolaskua, jonka tulos pyöristetään kokonaisluvuksi alaspäin. Huomaa

>>> 10//3   # Operandit kokonaislukuja
3
>>> 10//3.0 # Vähintään yksi operandi desimaaliluku
3.0
>>> 10//-3  # Negatiivinen operandi
-4

Jakojäännös

Jakojäännös eli "tasajaon yli jäävä osuus" saadaan %-operaattorilla:

>>> 17 % 3
2
>>> 17 // 3
5
>>> 5 * 3 + 2 # Tarkistus: tasajaon tulos * jakaja + jakojäännös
17

Tehtäviä


Tehtävä 1

Tee ohjelma, joka tulostaa annetun minuuttimäärän tunteina ja minuutteina alla esitettyyn tapaan!

Anna minuutit: 132
Tunnit: 2
Minuutit: 12

Vinkki: print()-funktiolla voi tulostaa monta asiaa yhdellä kertaa, kun erottaa ne toisistaan pilkulla - esimerkiksi print("Tunnit",tunnit) tulostaa yhdelle riville merkkijonon Tunnit ja muuttujan tunnit sisällön. Väliin tulostuu aina yksi välilyönti.


Tehtävä 2

Muokkaa edellisen tehtävän ohjelmaa niin, että vastaus tulostuu muodossa

132 minuuttia on 2 tuntia 12 minuuttia

Potenssiin korotus

Potenssiin korotus tapahtuu **-merkinnällä:

>>> 5 ** 2  # 5 korotettuna toiseen potenssiin
25
>>> 2 ** 7  # 2 korotettuna 7:nteen potenssiin
128
Päivitetty 24.11.2022

<<  Edellinen
(6) Muuttujien tyypit
Sivu 7/17Seuraava >>
(8) Merkkijonojen käsittely
© Timo Heikkinen | timo piste heikkinen at oamk piste fi