MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Conversia tipurilor

În operațiile cu date pot fi utilizate valori de diferite tipuri. De exemplu, se adună un număr de tip int și un număr de tip float:

a = 2       # număr int
b = 2.5     # număr float
c = a + b
print(c)    # 4.5

În acest caz nu va exista nicio eroare. Totuși, Python nu poate întotdeauna să efectueze automat operații în care sunt implicate date de tipuri diferite. Să vedem ce reguli se aplică în acest caz.

Conversii implicite

Ambele numere din operațiile aritmetice trebuie să reprezinte același tip. Dacă cei doi operanzi ai operației reprezintă tipuri de date diferite, Python încearcă să efectueze automat conversia la unul dintre tipuri conform următoarelor reguli:

  • Dacă unul dintre operanzi reprezintă un număr complex (tip complex), atunci celălalt operand este de asemenea convertit la tipul complex.
  • În caz contrar, dacă unul dintre operanzi reprezintă tipul float, atunci celălalt operand este de asemenea convertit la tipul float. Așa s-a întâmplat în exemplul de mai sus, unde valoarea variabilei a a fost convertită la tipul float.
  • În caz contrar, ambii operanzi trebuie să reprezinte tipul int, și în acest caz conversia nu este necesară.

Conversii explicite

În unele cazuri apare necesitatea de a efectua manual conversia tipurilor. De exemplu, să presupunem că avem următorul cod:

a = "2"
b = 3
c = a + b

Ne așteptăm ca "2" + 3 să fie egal cu 5. Totuși, acest cod va genera o excepție, deoarece primul număr reprezintă de fapt un șir de caractere. Și vom vedea la executarea codului ceva de genul:

Traceback (most recent call last):
 File "/Users/eugene/PycharmProjects/HelloApp/main.py", line 3, in 
   c = a + b
TypeError: can only concatenate str (not "int") to str

Pentru conversia tipurilor, Python oferă o serie de funcții încorporate:

  • int(): convertește valoarea la un număr întreg.
  • float(): convertește valoarea la un număr cu virgulă mobilă.
  • str(): convertește valoarea la un șir de caractere.

int

Astfel, în exemplul precedent convertim șirul la un număr cu ajutorul funcției int():

a = "2"
b = 3
c = int(a) + b
print(c)    # 5

Exemple de conversii cu ajutorul funcției int():

a = int(15)     # a = 15
b = int(3.7)    # b = 3
c = int("4")    # c = 4
e = int(False)  # e = 0
f = int(True)   # f = 1

Totuși, dacă valoarea nu poate fi convertită, funcția int va genera o eroare ValueError: invalid literal for int() with base 10:

b = int("a1c")  # Eroare
c = int("4.7")  # Eroare

float

În mod similar, funcția float() convertește o valoare la un număr cu virgulă mobilă.

a = "2.7"
b = 3
c = float(a) + b
print(c) # 5.7


Exemple de conversii cu ajutorul funcției float():

a = float(15)       # a = 15.0
b = float(3.7)      # b = 3.7
c = float("4.7")    # c = 4.7
d = float("5")      # d = 5.0
e = float(False)    # e = 0.0
f = float(True)     # f = 1.0

Dar, din nou, nu toate valorile pot fi automat convertite la float. În următorul caz, Python va genera o eroare:

d = float("abc")  # Eroare

str

Funcția str() convertește o valoare la un șir de caractere:

a = str(False)      # a = "False"
b = str(True)       # b = "True"
c = str(5)          # c = "5"
d = str(5.7)        # d = "5.7"

Funcția str() poate fi utilă, de exemplu, la adăugarea unei valori de alt tip la un șir de caractere. De exemplu, în următorul caz vom obține o eroare:

age = 22
message = "Age: " + age     # Eroare
print(message)

Dacă un număr este adăugat la un număr, este o operație standard de adunare a numerelor. Dacă un șir este adăugat la un șir, este o operație de concatenare a șirurilor. Dar cum să efectuezi operația de adunare între un șir și un număr, Python nu știe. Și dacă dorim să realizăm o operație de concatenare a șirurilor, putem converti numărul la șir cu ajutorul funcției str():

age = 22
message = "Age: " + str(age)   # Age: 22
print(message)
← Lecția anterioară Lecția următoare →