Luvut Pythonissa
Erota kokonaisluku int ja liukuluku float. Liukuluvut kuvaavat lukuja likimääräisesti; tulostuksen muotoilu on eri asia kuin laskenta.
Laskutoimitukset
+ ja - laskevat summan ja erotuksen, * tulon ja ** potenssin. Kokonaislukujen /-jako tuottaa float-arvon. // on lattiajako: se pyöristää osamäärän kohti miinusääretöntä, ei aina kohti nollaa. Jos mukana on float, myös lattiajaon tulos voi olla float.
print(5 + 3, 5 - 3, 5 * 3)
print(4 / 2)
print(5 // 3, -5 // 3)
print(5 % 3, -5 % 3)
print(2 ** 3)Tulostus (ilman syötteiden kysymystekstejä):
8 2 15 2.0 1 -2 2 1 8
Muunnokset
int muuntaa kokonaislukutekstin luvuksi. Liukuluvun int-muunnos katkaisee murto-osan kohti nollaa. float lukee myös desimaalipisteen sisältävän tekstin. str muodostaa tekstiesityksen. Kaikki tekstiarvot eivät ole kelvollisia lukuja.
print(int("12"))
print(int(-3.9))
print(float("3.5"))
print("Luku: " + str(12))Tulostus (ilman syötteiden kysymystekstejä):
12 -3 3.5 Luku: 12
Liukuluvun tarkkuus
Esimerkiksi 0.1 ei ole tarkka äärellinen binäärimurtoluku. Älä vaadi laskettujen liukulukujen tarkkaa yhtäsuuruutta ilman harkintaa. round pyöristää arvon; :.2f määrää tulostettavien desimaalien määrän. Tasatilanteessa round käyttää lähintä parillista tulosta, mutta binääriesitys voi vaikuttaa siihen, onko arvo todella tasan puolivälissä.
print(0.1 + 0.2 == 0.3)
print(f"{0.1 + 0.2:.2f}")
print(round(2.5), round(3.5))Tulostus (ilman syötteiden kysymystekstejä):
False 0.30 2 4
Lisätieto: kompleksiluvut
Kompleksiluvussa j merkitsee imaginääriyksikköä. .real ja .imag ovat reaalisia osia float-arvoina. Tätä ei tarvitse hallita peruskurssin ensimmäisiin tehtäviin.
z = 3 + 4j
print(z.real, z.imag)Tulostus (ilman syötteiden kysymystekstejä):
3.0 4.0
Kokeile itse
Mitä -7 // 2 tuottaa ja miten se eroaa int(-7 / 2):sta?
Vastaus ja perustelu
Lattiajako tuottaa -4. int-muunnos katkaisee kohti nollaa ja tuottaa -3.
Suorita koodiesimerkit yksi kerrallaan. Jokainen esimerkki sisältää tarvitsemansa määrittelyt. Vertaa omaa ennustettasi tulosteeseen ennen seuraavaan aiheeseen siirtymistä.