joi, 11 aprilie 2013

Tutorial Python - Numere şi Booleeni

În Python fiecare valoare are un tip de dată, dar atunci când definiţi o variabilă nu trebuie să precizaţi tipul deoarece Python îşi dă singur seama de acest lucru pe baza valorii atribuite variabilei.
Orice lucru din Python este un obiect. Obiectul este un concept abstract (va fi definit mai bine când voi ajunge la OOP), dar... ce trebuie să ştiţi este că obiectele au atribute şi metode (funcţii).
Atributele şi metodele se accesează folosind operatorul punct (.) (Ex: math.pi). Obiectele pot fi atribuite variabilelor şi pot fi transmise ca argumente funcţiilor.
Pe lângă tipurile pe care le veţi întâlni în acest tutorial, trebuie să ştiţi că mai există şi altele, cum ar fi tipul clasă, tipul modul, tipul funcţie, tipul fişier, tipul cod compilat (până şi codul compilat are tip), etc.
Aceste lucruri sunt posibile deoarece - REŢINEŢI - în Python există numai obiecte.

Numere

Aţi văzut deja exemple. Numerele în Python sunt:
  • Întregi: -4, 1, 68, 78964, -45
  • Float (Numere Reale): 2.234, -234.4, 1.0
  • Fracţii (Numere Raţionale): 1/2, 4/5, 2/3
  • Numere Complexe: 1+4j, 2-3j, 5j
>>> import fractions
>>> x = fractions.Fraction(4, 5) # Defineste o fractie
>>> x
Fraction(4, 5) # 4 / 5
>>> 2 * x
Fraction(8, 5)
>>> y = fractions.Fraction(1, 2)
>>> x + y
Fraction(13, 10)
>>> fractions.Fraction(1, 0)
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    fractions.Fraction(1, 0)
  File "C:\Python33\lib\fractions.py", line 167, in __new__
    raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
ZeroDivisionError: Fraction(1, 0)
Ca să puteţi folosi fracţiile trebuie să importaţi modulul fractions.
Fracţiile suportă şi ele aceleaşi operaţii matematice ca şi celelalte numere. Python nu permite împărţirea prin zero.
Fracţiile vor fi aduse automat la forma ireductibilă de către obiectul Fractions.
Numerele complexe sunt definite în Python. Numerele imaginare au sufixul j sau J.
Nu este necesar să importaţi vreun modul ca să le puteţi folosi.
>>> z = 3 + 4j
>>> q = 9 - 7j
>>> z + q
(12-3j)
>>> z - q
(-6+11j)
>>> z * q
(55+15j)
>>> z / q
(-0.007692307692307695+0.4384615384615385j)
>>> q.conjugate() # Conjugatul lui q
(9+7j)
>>> z.real # Partea reala
3.0 
>>> z.imag # Partea imaginara
4.0
>>> x = complex(1, 2) # Un alt mod de a crea un nr complex
>>> x
(1+2j)
Nu există limită pentru lungimea întregilor. Pot fi oricât de lungi vreţi (trebuie doar să aveţi destulă memorie).
>>> wow = 239502357286547637657436598234983928647836745836473856738402390417309720953498564836502479104739846537845619823675498734572039470943579034578634578353785387583457384583745873458345810123131091928301297394730291093
>>> wow
239502357286547637657436598234983928647836745836473856738402390417309720953498564836502479104739846537845619823675498734572039470943579034578634578353785387583457384583745873458345810123131091928301297394730291093
Numerele float au o precizie de 15 zecimale, dar aveţi grijă deoarece operaţiile cu float nu sunt întotdeauna precise. De exemplu:
>>> import math
>>> math.tan(math.pi / 4)
0.9999999999999999 # Ar fi trebuit sa fie 1.0
Puteţi folosi funcţia abs ca să aflaţi valoarea absolută a unui număr şi funcţia round ca să rotunjiţi un float.
>>> z = 2+2j
>>> abs(z)
2.8284271247461903
>>> p = -3
>>> abs(p)
3
>>> i = 9j
>>> abs(i)
9.0
>>> x = 2.678
>>> round(x)
3
>>> round(x, 1)
2.7
>>> round(x, 2)
2.68
>>> round(x, 3)
2.678
Al doilea parametru al funcţiei round reprezintă precizia rotunjirii (la câte zecimale să fie rotunjit numărul).

Booleeni

Valorile booleene apar în instrucţiunile decizionale, în loop-urile while, for, practic în orice context boolean (expresiile de la care Python aşteaptă o valoare booleană).
O valoare booleană poate fi True sau False.
Valorile nenule sunt considerate True, iar cele nule sunt considerate False.
Din acest motiv, practic orice expresie poate fi folosită într-un context boolean.
Operatorii care returnează valori booleene sunt: >, <, ==, >=, <=, not
>>> 1 < 2
True
>>> 1 > 5
False
>>> 2 == 2 # echivalent 
True
>>> 9 <= 10 # mai mic sau egal
True
>>> 11 >= 11 # mai mare sau egal
True
>>> 1.0 == 1
>>> (1/2) / (1/2) == 1
True
not 1 < 2
False
Operatorul not inversează valoarea de adevăr a expresiei.
Nu confundaţi operatorul de atribuire = cu operatorul de egalitate == !
Operatorii logici în Python sunt and şi or.
>>> True and True
True
>>> False and True
False
>>> True or False
True
>>> False or False
False
AND returnează TRUE dacă ambii operanzi sunt TRUE.
OR returnează TRUE dacă unul dintre operanzi este TRUE.
Vom folosi aceşti operatori la structurile de control.

Niciun comentariu:

Trimiteți un comentariu

Rețineți: Numai membrii acestui blog pot posta comentarii.