Multiple Return Values
Am învățat că return trimite o valoare înapoi dintr-o funcție. Dar dacă vrem să trimitem înapoi mai mult de o valoare? De exemplu, o funcție care ne dă atât minimul cât și maximul unei liste
În multe limbaje de programare, asta e complicat. În Python, este minunat de simplu
def minim_maxim(numere):
return min(numere), max(numere)
cel_mai_mic, cel_mai_mare = minim_maxim([5, 2, 8, 1, 9])
print(cel_mai_mic)
print(cel_mai_mare)
Ieșire
1
9
Ce s-a întâmplat? Funcția a returnat două valori separate printr-o virgulă. În exterior, le-am despachetat în două variabile, exact cum am făcut cu tuplele. De fapt, asta este exact ce face Python în culise: creează o tuplă și apoi o despachetează
def minim_maxim(numere):
return min(numere), max(numere)
rezultat = minim_maxim([5, 2, 8, 1, 9])
print(rezultat)
print(type(rezultat))
Ieșire
(1, 9)
<class 'tuple'>
Vezi? Este o tuplă. return a, b este același lucru cu return (a, b). Python ne lasă să sărim parantezele pentru comoditate
Asta este incredibil de util pentru funcțiile care calculează valori înrudite
def statistici_jucator(scoruri):
total = sum(scoruri)
medie = total / len(scoruri)
cel_mai_bun = max(scoruri)
return total, medie, cel_mai_bun
t, medie, varf = statistici_jucator([80, 95, 70, 88])
print(f"Total: {t}")
print(f"Medie: {medie}")
print(f"Cel mai bun: {varf}")
Ieșire
Total: 333
Medie: 83.25
Cel mai bun: 95
O singură funcție, trei valori utile înapoi. Curat
O altă utilizare frecventă: o funcție care împarte un nume complet
def nume_impartit(nume_complet):
parti = nume_complet.split(" ")
prenume = parti[0]
nume_familie = parti[1]
return prenume, nume_familie
primul, ultimul = nume_impartit("Tommy Vercetti")
print(f"Prenume: {primul}")
print(f"Nume: {ultimul}")
Ieșire
Prenume: Tommy
Nume: Vercetti
.split(" ") este o nouă metodă pentru șiruri: împarte un șir după un separator (în acest caz un spațiu) și returnează o listă cu părțile. Deci "Tommy Vercetti".split(" ") ne dă ["Tommy", "Vercetti"]
Misiune: Analizatorul de Coordonate
Scrie o funcție analizeaza(citire) care primește un șir de trei numere separate prin spații (precum "45 90 12") și returnează trei valori: suma, cel mai mare și cel mai mic.
În interiorul funcției, folosește .split(" ") ca să spargi șirul în părți și transformă fiecare parte într-un număr. Apoi returnează toate cele trei rezultate deodată.
În programul principal, citește o linie, apelează analizeaza, despachetează cele trei valori și afișează-le.
Intrare:
- trei numere pe o singură linie, separate prin spații
Ieșire
Total: 147
Cel mai mare: 90
Cel mai mic: 12
Exemplu
Dacă utilizatorul tastează
45 90 12
programul afișează rezultatul arătat mai sus.