A Pythonnak három különböző beépített számítípusa van: egész számok (int), lebegőpontos számok (float) és komplex számok (complex).
A törtek (fractions.Fraction) és a decimálisok (decimal.Decimal) szintén elérhetők, ha importálod őket a szabványos könyvtárból.
A tizedesjegy nélküli egész számok, köztük a hexadecimális (hex()), oktális (oct()) és bináris (bin()) számok is, ints-ként vannak azonosítva:
# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>
>>> -12
-12
A tizedespontot tartalmazó számok (törtrésszel vagy anélkül) floats-ként vannak azonosítva:
>>> 3.45
3.45
>>> type(3.45)
<class 'float'>
A Python teljes mértékben támogatja az aritmetikát e különböző számítípusok között, és amikor a bináris aritmetikai operátorokkal (+, -, *, /, // és %) használod őket, a szűkebb számokat a kevésbé szűk megfelelőikhez igazítja.
Az összeadás és kivonás operátorai úgy viselkednek, mint a hétköznapi matematikában.
Ha az operandusok közül egy vagy több float, akkor a többi ints-ből is floats lesz:
>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0
Az összeadáshoz és kivonáshoz hasonlóan a szorzás is a kevésbé szűk megfelelőikhez igazítja a szűkebb számokat:
>>> 3 * 2
6
>>> 3 * 2.0
6.0
Az osztás mindig float-ot ad vissza, még akkor is, ha az eredmény egész szám:
>>> 6/5
1.2
>>> 6/2
3.0
Ha int eredményre van szükséged, az egészrészes osztással csonkolhatod az eredményt.
Az egészrészes osztást a // operátorral végzed el:
>>> 6//5
1
>>> 6//2
3
A modulo operátor (%) a két operandus osztásának maradékát adja vissza:
# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0
# The result of % is 2 here, because 3 only goes into 5 once, with 2 leftover
>>> 5 % 3
2
Az 5 % 3 egy másik megközelítésben:
>>> whole_part = int(5/3)
1
>>> decimal_part = 5/3 - whole_part
0.6666666666666667
>>> whole_remainder = decimal_part * 3
2.0
A Python biztosít egy beépített round(number, <decimal_places>) függvényt, amellyel egy lebegőpontos számot adott számú tizedesjegyre kerekíthetsz.
Ha nem adod meg a tizedesjegyek számát, a szám a legközelebbi egész számra kerekedik, és int-et ad vissza:
>>> round(3.1415926535, 2)
3.14
>>> round(3.1415926535)
3
A Pythonban zárójelekkel csoportosíthatod a kifejezéseket. Ez akkor hasznos, ha felül akarod bírálni a műveletek alapértelmezett sorrendjét.
>>> 2 + 3 * 4
14
>>> (2 + 3) * 4
20
A Python az operátorok precedenciájában a PEMDAS szabályt követi.
Ez azt jelenti, hogy a ()-en belüli számítások élveznek elsőbbséget, ezt követi a **, majd a *, /, //, %, + és -:
>>> 2 + 3 - 4 * 4
-11
>>> (2 + 3 - 4) * 4
4
# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 64, then 2 + 192
>>> 2 + 3 * 4 ** 4
770
A Python egész számai tetszőleges pontosságúak, a számjegyek számát csak a gazdarendszer rendelkezésre álló memóriája korlátozza.
A lebegőpontos számok általában C-beli double típussal vannak megvalósítva (15 tizedesjegy pontossággal), de ábrázolásuk a gazdarendszertől függően változhat.
A komplex számoknak van egy real és egy imaginary része, mindkettőt lebegőpontos számok ábrázolják.
A lebegőpontos aritmetika programozási nyelvek közötti problémáinak és korlátainak részletesebb tárgyalásához nézd meg a 0.30000000000000004.com oldalt és A Python útmutatót.
A cég, amelynél dolgozol, csökkenteni szeretné a karbonlábnyomát, ezért szeretné, ha írnál egy programot, amely kiszámítja az elektronikai eszközeik teljesítményfelvételét és üzemeltetési költségét.
A munkáltatódnak van egy programja, amely kiszámítja, mennyi időbe telik a különböző elektronikai eszközök futtatása. Az idő jelenleg órákban van tárolva. Amikor a munkáltatód összeadta az órákat, észrevette, hogy az időtartam nem stimmel. Szeretné, ha hozzáadnál 3 extra órát az időadatokhoz. Arra is kíváncsi, mennyi „extra” óra marad, miután az adatokat „teljes” napokra váltod (egy nap 24 óra). Elképzelhető, hogy az átváltandó idő nem egész napokban van megadva.
Készíts egy get_extra_hours() függvényt, amely egy egész számot vár paraméterként, ami az órák számát tartalmazza. A függvény végezze el a megfelelő „extra órák” kiigazítást, majd return-nel adjon vissza egy egész számot, amely megmutatja, hány órát kell levonni az összegből ahhoz, hogy megkapd az időt „teljes” napokban.
>>> get_extra_hours(25)
4
A munkáltatód szeretné tudni, mennyi a különböző elektronikai eszközök teljesítményfelvétele kW-ban. A kW a kilowatt rövidítése, ahol a watt a teljesítmény mértékegysége. A mértékegység nevében szereplő kilo a metrikus rendszer előtagja, ami 1000-et jelent. Egy kilowatt == 1000 watt.
Készíts egy get_kW_value() függvényt, amely egy egész számot vár paraméterként, ami a wattok számát tartalmazza. A függvény ezután return-nel adja vissza a wattokat kilowattban, 1 tizedesjegyre kerekítve.
>>> get_kW_value(1150)
1.2
Ahhoz, hogy ki tudd számítani az elektronikai eszközök üzemeltetési költségét, a munkáltatódnak tudnia kell a teljesítményfelvételt kWh-ban. A kWh a kilowattóra rövidítése, ahol az óra az idő mértékegysége. Egy kilowattóra == 1000 watt egy órán át használva. Egy óra 60 percből áll, egy perc pedig 60 másodpercből. Egy óra 3600 másodperccel egyenlő. A kWh érték kiszámításához először a wattokat kell kW-ra váltanod, majd az eredményt 3600-zal kell egészrészesen elosztanod.
Készíts egy get_kWh_value() függvényt, amely egy egész számot vár paraméterként, ami a wattok számát tartalmazza. A függvény ezután return-nel adja vissza a kilowattórákat egész számként.
>>> get_kWh_value(5000000)
1
Az elektronikai eszközök nem 100%-os hatásfokúak. Ezért a munkáltatód szeretné, ha kiszámítanád az eszközök hatásfokát. A hatásfok kiszámításához el kell osztanod a teljesítménytényezőt (0 és 100 közötti tizedes tört) 100-zal.
Készíts egy get_efficiency() függvényt, amely egy tizedes törtet vár paraméterként, ami a teljesítménytényezőt tartalmazza. A függvény ezután return-nel adja vissza a kiszámított hatásfokot tizedes törtként.
>>> get_efficiency(80)
0.8
A munkáltatód szeretné tudni, mennyibe kerül az elektronikai eszközök üzemeltetése. Az üzemeltetés költsége a felhasznált teljesítmény és az egy kWh-ra jutó költség szorzata. A felhasznált teljesítmény a megadott teljesítmény osztva a kiszámított hatásfokkal.
Készíts egy get_cost(<watts>,<power_factor>,<price>) függvényt, amely egy egész számot vár paraméterként, ami a wattok számát tartalmazza, egy tizedes törtet, ami a teljesítménytényezőt tartalmazza, és egy tizedes törtet, ami az egy kWh-ra jutó költséget tartalmazza. A függvény ezután return-nel adja vissza az elektronikai eszközök üzemeltetésének költségét tizedes törtként.
>>> get_cost(5000000, 80, 0.25)
0.3125
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.