0% au considerat acest document util (0 voturi)
15 vizualizări67 pagini

Curs de Python

Acest document oferă o introducere în limbajul de programare Python. Discută de ce Python este un limbaj bun pentru începători, arată cum se declară variabile și tipuri de date de bază și explică intrarea și ieșirea. Documentul prezintă, de asemenea, bucle, condiționale, liste, dicționare și funcții în Python.

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
15 vizualizări67 pagini

Curs de Python

Acest document oferă o introducere în limbajul de programare Python. Discută de ce Python este un limbaj bun pentru începători, arată cum se declară variabile și tipuri de date de bază și explică intrarea și ieșirea. Documentul prezintă, de asemenea, bucle, condiționale, liste, dicționare și funcții în Python.

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Tabela de conț inuturi

Introducere 1.1
Ar trebui să înveț i Python 1.2
Începând cu Python 1.3
Deviatii conditionale, facand programul tau sa ia decizii 1.4
Valori None, Stringuri ș i Liste 1.5
Liste 1.6
Laț uri de Repetiț ie - I 1.7
Legături de Repetiț ie - II 1.8
Dicț ionare 1.9
Modularizarea codului cu Funcț ii 1.10
Expresii Lambda 1.11
Concluzie 1.12
Rezolvarea exerciț iilor 1.13

2
Introducere

Prefaț ă
Lumea este din ce în ce mai conectată, necesitatea de a dezvolta gândirea
computatională ș i capacitatea de a rezolva probleme prin intermediul programării este
crescente.

Mai multe instituț ii din Brazilia ș i din lume adoptă discipline de programare de
software în învăț ământul fundamental ș i mediu. Având în vedere acest lucru, această carte îș i propune să ajute

procesul iniț ial către lumea dezvoltării ș i programării.

Principalul obiectiv este de a demistifica programarea prin exemple practice ș i


exerciț ii, pentru a putea înceta să fim doar utilizatori de tehnologie, ci ș i
ne vom transforma în creatori ai ei.

Despre autor
Gabriel Schade Cardoso este dezvoltator de software pe platforma .NET din 2008,
în plus, îș i desfăș oară activitatea ca profesor în cadrul cursului de ș tiinț a calculatoarelor ș i sisteme pentru

internet.

Este destul de legat de comunitatea de dezvoltare a software-ului naț ional, deoarece


Pentru contribuț iile sale, a primit premiul Microsoft MVP (Most Valuable)
Profesional) la categoria Tehnologii de Dezvoltare.

Master în informatică aplicată cu focus pe inteligenț ă artificială ș i licenț iat în Ș tiinț ă


da Computaț iei. Consumator ș i creator de jocuri în timpul liber, pasionat de tehnologie,
literatură fantastică ș i jocuri de cărț i.

Puteț i găsi autorul la:

Linkedin
Github
Blog personal

Ce veț i găsi în această carte?


Această carte este un produs gratuit format din publicaț ii ale blogului
[Link] iile au fost editate pentru a îmbunătăț i experienț a
de lectură.

3
Introducere

Fiecare capitol abordează în mod direct o temă de bază despre programare de


calculatoare, utilizând limbajul de programare Python ca exemplu.

Toate capitolele au o listă de exerciț ii pentru consolidare, este foarte recomandat.


căutai materiale externe pentru a-ț i completa învăț area.

În plus, se recomandă cu tărie ca exerciț iile să fie efectuate imediat după


lectura capitolului, pentru a asigura practica împreună cu teoria.

Sper că vei profita de această călătorie în lumea programării folosind unul dintre
limbaje mai simple disponibile!

4
Ar trebui să înveț i Python

Ar trebui să înveț i Python


Aș a cum am spus anterior, programez majoritar pe platforma .NET, dar
consider că este o eroare uriaș ă ca programatorii să se închidă în mica lor lume, fie ea Java,
.Net sau orice platformă care ar fi.

Limbajele de programare, în general, au diferite caracteristici,


obiectivul acestui carte este să te iniț ieze în universul programării, ceea ce ne duce la întrebarea:

Dacă vrei să începi să programezi, care este cea mai bună limbaj? - Ca întotdeauna, depinde.

Dacă aveț i o înț elegere de bază (foarte de bază) a limbii engleze ș i doriț i să începeț i cu o
limbaj de piaț ă, eu sugerez cu tărie limbajul Python. De aceea, o vom folosi.
în această carte.

Dar, aș a cum am spus înainte, nu totul este alb ș i negru, în funcț ie de experienț a ta ș i
noț iuni de limbă engleză, îț i sugerez să arunci o privire asupra limbajuluiPortugol.

Această limbă este întreț inută de universitatea UNIVALI ș i are scopul de a facilita iniț ierea
în programare utilizând termeni în portugheză ș i o sintaxă simplificată.

Dar din nou, merită să subliniem că, în ciuda excelentei sale dimensiuni educaț ionale, Portugol nu este
o limbaj de piaț ă, prin urmare, vom folosi Python.

Python este o limbaj senzaț ional, într-adevăr. Ș i putem face multe lucruri cu
Ea, multe chiar, ajunge să fie înfricoș ător.

Eu costumo să spun că atât C# cât ș i F# sunt limbi de programare de scop general, adică
pot fi aplicate pentru mai multe scenarii, dar niciuna dintre ele nu este atât de versatilă ca
Python.

Poț i folosi Python pentru:

Crearea de scripturi de automatizare, de exemplu, la fiecare N minute trimite un ping la toate


paginile site-ului;
Grafos;
Viziune computerizată
Aplicaț ii desktop multi-platformă;
Aplicaț ii Android;
Aplicaț ii Web;
Învăț are automată

5
Ar trebui să înveț i Python

De parcă asta nu ar fi de ajuns, Python este încă un limbaj cu o sintaxă super


simplu. Făcând ca codul să arate foarte asemănător cu o versiune simplificată a
engleză.

În acest prim capitol vom ajunge doar până la începutul începutului, cel mai mare hit al
calcul, marele: "Salut Lume"!

Hello World

Asta e! Nu există nimic omis în cod, nu există declaraț ia niciunui nume complicat
ca namespace, importarea pachetului, funcț ieprincipalnimic.

Atât de simplu cât asta, Nu-i aș a?

Un alt punct foarte interesant despre Python este că foloseș te o sintaxă bazată pe
spaț iere, ceva ce F# a reutilizat ș i de asemenea a făcut.

Aceasta face ca limba să fie considerabil mai concisă, deoarece nu sunt necesare puncte ș i
virgule, acolade ș i tot zgomotul prezent de obicei în codurile pe care le programează
scriem.

Nu am spus nimic despre instalarea Python-ului ș i despre mediul de


dezvoltare, asta pentru că există diverse moduri de a programa în Python, de la
ambianturi web până la medii de dezvoltare complete.

Puteț i accesa site-ul:Acesta este un link ș i nu poate fi [Link]ț i să selectaț i limbajul Python, astfel că deja
poț i programa în Python fără a fi nevoie să instalezi nimic!

Dacă doriț i un instrument mai complet, puteț i utiliza documentaț ia despre cum
instalaț i uneltele ș i limbajul Pythonneste link.

6
Începând cu Python

Capitolul 2 - Începând cu Python


Bine, să începem! Fără prea multă teorie acum, să ne apucăm de treabă!

Este important de subliniat că pentru această carte folosesc versiunea 3.6 a Python ș i Visual
Studio 2017 ca IDE, veț i putea alege un mediu diferit, dar recomand.
utilizaț i acelaș i lucru pentru a evita posibile conflicte.

Voi începe de la început. Chiar de la început. Vom vedea variabile, tipuri ș i intrare
ieș ire (IO).

Declararea variabilelor
Cea mai de bază lucru pe care îl putem găsi într-o limbaj de programare este
variabile. Dar ce sunt variabile?

În termeni simpli, variabilele sunt datele manipulate de programul tău. Aceste date
sunt stocate temporar în memoria computerului dumneavoastră.

Antigamente era necesar să ai mult mai multă grijă când foloseai prea multe variabile, din cauza
da limitaț ia memoriei computerelor, astăzi acest lucru trebuie să fie luat în considerare
consideraț ie, dar avem mult mai multă libertate decât înainte.

Dar, cum ș tim variabilele sunt stocate în memorie? -Ei bine, memoria
computatorul functioneaza asemanator cu sistemul nostru social.

Ce faci când trebuie să îi spui cuiva unde locuieș ti?

Tu dai adresa, nu-i aș a?

Memoria computerului face acelaș i lucru, fiecare spaț iu posibil are o adresă
unic, astfel încât computerul tău să ș tie unde să găsească informaț ia.

Imaginaț i-vă că adresa este coordonatele de latitude ș i longitudine ale unui loc, este foarte
specific ș i nu se repetă. Dar cu ce frecvenț ă îț i transmiț i adresa în sistem
de coordonatelor?

Dacă nu eș ti foarte ciudat, probabil că foloseș ti foarte puț in sistemul de coordonate,


Sigur? - Facem asta pentru că nu este intuitiv pentru majoritatea oamenilor, la fel ca
adresele de memorie din computerul tău.

7
Pornind cu Python

Rezolvăm această problemă creând nume pentru ț ări, oraș e ș i străzi. În aceeaș i
logică, nu folosim sistemul de adresare a memoriei computerului, el este
prea complicat ș i nici nu avem control total asupra locului unde sunt stocate lucrurile (ș i asta
este grozav).

Pentru a accesa datele în memorie, utilizăm identificatori, adică nume. O


variabila, în cele din urmă, este o compunere a trei lucruri: identificator de acces +
dado stocat + tip.

Aș teaptă, ce? - Da, adică, dar deocamdată nu trebuie să-ț i faci griji în legătură cu asta.

Să mergem la cod!

Cum să creezi o variabilă în Python? -Este foarte simplu, trebuie doar să-i dai un nume ș i să-i atribui
o valoare utilizând operatorul= , vezi:

valor =42

Asta e tot.

Interesant este că poț i efectua operaț iuni cu aceste valori de asemenea, vezi:

valor =42
rezultatul = 42 + 10

În acest caz, informaț ia stocată în variabilărezultatva fi rezultatul


expresie matematică.

La fel ca în multe alte limbi, poț i folosi o variabilă ca valoare.


Adică, orice loc în care ai pune o valoare, poț i înlocui cu un
variabilă.

valor =42
rezultat = valoare + 10

Viram doar, în ciuda valorii stocate în variabilărezultata fi acelaș i cu celălalt


exemplu (52), acum utilizăm variabila pentru a calcula.

Puteț i afiș a rezultatul stocat în variabile cu funcț iaimprimare, vezi:

valor =42
rezultat = valoare +10
print(resultado)

8
Începând cu Python

Să practicăm
Fă un algoritm pentru a rezolva ecuaț ia z = x + y - 4, stocând rezultatul în
variabila z. Consideraț i că valorile iniț iale ale lui x ș i y sunt, respectiv, 10 ș i 5.
După aceasta afiș ează rezultatul.

Fă un algoritm pentru a rezolva ecuaț ia z = a * a - b + c, stocând rezultatul


în variabila z. Consideraț i că valorile iniț iale ale a, b ș i c sunt, respectiv, 4, 6.5
e 10.5. După asta, afiș aț i rezultatul.

Atenț ie

Se recomandă cu tărie să încercaț i să faceț i exerciț iile înainte de a viziona


răspunsuri. Puteț i găsi răspunsurileaici, ai grijă să nu primeș ti
spoileri pentru următoarele exerciț ii.

Ai reuș it să răspunzi? -Sper că da! Dacă nu a mers, poț i verifica


as răspunsurile din linkul de mai sus.

Acum că ai efectuat câteva teste mici, să vorbim despre tipuri.

Aminteș te-ț i că am vorbit că o variabilă este compusă din: identificator, dată ș i tip? Ei bine.

Cred că a fost foarte clară problema identificatorului ș i a valorii, dar poate tipul
încă sunt confuz, dar liniș te, îț i explic.

O tip este ceea ce defineș te caracteristica datelor pe care variabila le stochează, în Python nu
nu trebuie să spunem explicit asta niciun moment, dar putem deduce.

În exerciț ii am făcut câteva operaț ii matematice, dar nu toate datele sunt


numere. Uneori trebuie să stocăm valori de alte tipuri, să le cunoaș tem:

Numere: întregi (int) ș i cu zecimale (float)


Texturi (ș ir sau str)
Logice (bool)

Un lucru foarte interesant despre tipuri este că, după ce le cunoaș tem, putem
simplu să lucrăm aș a cum am făcut cu numerele înainte. Poate că nici nu ai
reparat, dar în al doilea exerciț iu am folosit atât numere întregi cât ș i floaturi.

Trebuie să declarăm variabilelebec cu valori decimale.

Să trecem la texte acum!

Pentru a defini că o valoare este un ș ir de caractere există 3 opț iuni:

Între aspas simple:text;

9
Începând cu Python

Între ghilimele duble:text;


Între o trinitate de ghilimele duble:texto;

Puteț i utiliza oricare dintre ele ș i programul dumneavoastră va înț elege că este vorba despre o
ș ir.

Haideț i să facem un exemplu cu funcț ia print:

print("Salut Python!")

În mod particular, eu prefer să folosesc sintaxa cu ghilimele duble, dar eș ti liber să foloseș ti.
ceea ce îț i face plăcere.

Să facem împreună un program care solicită numele utilizatorului ș i îl afiș ează apoi.
console! Pentru a solicita o informaț ie utilizatorului, folosiț i funcț iaintrare, conforme codului:

Introduce ț i-vă numele:


print(nome)

Legal, nu-i aș a? - Observă că poț i utiliza funcț iaintroducerepentru a obț ine date de orice tip,
nu doar pentru texte, ci în celelalte cazuri va fi necesar să transformăm tipul.

Vom avea un capitol complementar despre tipul string, acesta are diverse caracteristici
specifice. Aș a că, deocamdată, să trecem la următorul tip: Tipul logic!

Variabilele de tip logic sau boolean sunt utilizate pentru a defini adevăruri (Adevărat) ș i minciuni
(Fals). Acest tip de variabilă poate stoca doar aceste două valori.

Iată un exemplu:

Adevărat
mentira =False

În general, în celelalte limbi, valorile de acest tip sunt scrise cu litere mici,
însă în Python aceste valori încep cu literă mare, dar diferenț ele se opresc aici.

La fel ca valorile numerice, este posibil să efectuezi operaț ii cu valori


logice. În acest caz folosim operatorii: nu (nuș i) eou(sau).

Haideț i să aplicăm aceș ti operatori în propoziț ii de limbaj natural:

Astăzi a fost soare dimineaț a


Astăzi a plouat după-amiază -> consideră această frază ca fiind o minciună

Aceste afirmaț ii în portugheză pot fi interpretate ca:

10
Începând cu Python

soare_dimineaț a =Adevărat

chuva_pela_tarde =False

Acum vom aplica operatorii, începând cu operatorul de negare (nu):

Hojenãodeu soare dimineaț a -> dacă prima afirmaț ie era adevărată, această afirmaț ie este
minciună
Hojenãochoveu după-amiază -> dacă a doua afirmaț ie era minciună, această afirmaț ie este
adevăr

Am perceput ceva?

fals!
minciuna e viceversa.

Vezi în cod:

soare_dimineaț a =Adevărat

chuva_pela_tarde =False

notsol_pela_manha Fals
nu_este_ansa_mai_târziu # -> Adevărat

Al doilea operator este operatorul. Acest operator relaț ionează două valori diferite pentru
a produce un nou. În acest caz, pentru ca rezultatul unei operaț iuni să fie adevărat, cei doi
valorile corelate trebuie să fie adevărate.

Să mergem din nou la propoziț ii:

Astăzi a fost soare dimineaț a ș i a plouat după-amiaza -> va fi o minciună, deoarece am definit că
nu a fost ploaie după-amiază.

Astăzi a fost soare dimineaț a ș i nu a plouat după-amiază -> va fi adevărat, pentru că atunci când negăm

valoarea ploii, cele două valori legate se vor întoarce adevărat.

soare ș i ploaie # -> Fals


soare_si_nu_ploua

O operatorul funcț ionează într-un mod destul de similar cu, dar în acest caz valoarea produsă
va fi adevărat de fiecare dată când unul dintre valori este adevărat. Aceasta este situaț ia în care funcț ionează

pior comparat cu limbajul nostru, dar cred că încă ajută la înț elegere:

Astăzi a fost soare dimineaț a sau a plouat după amiază -> dacă una dintre afirmaț ii este

adevărată, fraza este o adevăr.

11
Începând cu Python

Vezi în cod:

soare_diminea ț a_saunor_mai_târziu # -> Adevărat

soare_dimineata_sau_nu_ploaie_dupa_amiaza
nu_soare_diminea ț a_sau_ploaie_după-amiază

Pentru a ajuta la înț elegerea acestor operaț ii, avem celebrele "Tabele de Adevăr", iată:

Negarenu)
Valoare Rezultat
Adevărat Fals

Fals Adevărat

E (ș i)
Primul Valoare Al doilea Valoare Rezultat
Adevărat Adevărat Adevărat

Adevărat Fals Fals

Fals Adevărat Fals

Fals Fals Fals

Unde (sau)

Primul Valoare Al doilea Valoare Rezultat

Adevărat Adevărat Adevărat


Adevărat Fals Adevărat

Fals Adevărat Adevărat

Fals Fals Fals

În plus faț ă de aceș ti operatori, tipurile logice pot fi, de asemenea, obț inute prin compararea
valori de orice fel, de exemplu: 5 > 3 (cinci este mai mare decât trei?), această expresie
returnează o valoare logică!

12
Începând cu Python

5 > 3 # -> Adevărat

Avem diversi operatori pentru a realiza aceste comparaț ii!

Operator Descriere

== (egal) ÎntoarceAdevăratîn cazul în care cele două valori sunt egale


!=
RetornaAdevăratîn cazul în care cele două valori sunt diferite
(diferenț e)
RetornaAdevăratcaso valoarea din stânga operatorului să fie mai mare decât
(maior)
valoare la dreapta operatorului

>= (mai mare ReturneazăAdevăratdacă valoarea din stânga operatorului este mai mare sau egală
sau la fel ce valoare la dreapta operatorului
ReturAdevăratdacă valoarea din stânga operatorului este mai mică decât
< (mai mic)
valoarea din dreapta operatorului

<= (mai mare ReturAdevăratdacă valoarea din stânga operatorului este mai mică sau egală
sau la fel) ce valoare la dreapta operatorului

Observaț i că pentru a compara valorile folosim două semne egale== , asta pentru că când
utilizăm doar un egal, atribuim o valoare. Uitaț i:

x = 5
y = 10

x = y # -> facem ca variabila x să primească aceea ș i valoare cu variabila y


x == y# -> comparăm dacă valorile lui x ș i y sunt egale

Hai să practicăm
1. Fă un algoritm care solicită un număr utilizatorului

2. Fă un algoritm care să solicite numele utilizatorului ș i apoi să scrie numele persoanei


fără consolă.

3. Fă un algoritm care să întrebe utilizatorul câ ț i ani are, după aceea,


scrieAdevăratfără consolă, în cazul în care el a atins deja vârsta majoratului (18 ani), în caz
contrarFals.

4. Realizează un algoritm care solicită un număr utilizatorului, după care scrieAdevăratnu


console, în cazul în care numărul are două cifre (să fie între 10 ș i 99), altfel
scrieFals.

13
Începând cu Python

Atenț ie

Este puternic recomandat să încerci să faci exerciț iile înainte de a vedea


răspunsuri. Puteț i găsi răspunsurileaici.

14
Desvii condiț ionale, făcând programul tău să ia decizii

Capitolul 3 - Devreri condiț ionale, făcând


seu program să ia decizii!
Acum că ai văzut tipurile de bază ș i ai lucrat suficient cu valorile logice, vom
introduce o complexitate în programele noastre.

Vom crea o deschidere condiț ională, adică vom face ca programul să urmeze printr-un
cale sau alta în funcț ie de o condiț ie.

Asemenea aproape tot ceea ce am vorbit aici, sintaxa pentru a crea o deviaț ie
condiț ionalul în Python este destul de simplu.

Prima cosa pe care trebuie să o înț elegem este: când vorbim despre o condiț ie, înseamnă
ce trebuie să ș tim dacă ceva este adevărat sau fals, adică trebuie să folosim un tip
logică.

Ideea din spatele abaterilor condiț ionale este folosită tot timpul în conversaț iile noastre.
zi cu zi, vezi acest exemplu:

Mergi la piaț ă ș i cumpără lapte, dacă nu este, cumpără apă.

Vezi raț ionamentul din spate! Trebuie să verificăm dacă piaț a are lapte în stoc, dacă el
Tiver, să-l cumpărăm, dar în cazul în care nu avem, vom cumpăra apă.

Cum Python foloseș te limba engleză ca limbaj standard condiț ia se traduce în


comandădacă, vezi:

leite_em_estoque =True

ifleite_em_estoque
Am cumpărat lapte
altfel:
Am cumpărat apă

Execută acest algoritm, apoi schimbă valoarea variabilei înFalse execută-o


din nou!

Sunt viu? Acum putem face algoritmii să ia decizii!

Trebuie să foloseș ti comandaaltcevapentru cazul negativ, el ar fi echivalentul unui


altfel, adică: dacăcondi ț ieatunci fă x, nu face y.

15
Desvio condiț ional, făcând programul tău să ia decizii

Observaț i de asemenea că după condiț ie este necesar să puneț i două puncte, asta este
necesar pentru sintaxa Python.

Să facem încă un exemplu!

Creează o variabilă numerică pentru a reprezenta o notă de la un examen, după aceea


afiș ează mesajul "Aprobat" dacă nota este mai mare sau egală cu 7, altfel
Reprobat

nota =5

dacă nota >=7:


Aprobat
altfel:
Reprobado

În acest caz, puteț i opta pentru două abordări distincte: salvaț i rezultatul de
compararea într-o variabilă logică ș i compararea acesteia sau utilizarea expresiei direct în
comandădacă.

În general, este mai comun să folosim expresia direct în comandă, cu excepț ia cazului în care
cazuri în care această comparaț ie trebuie efectuată de mai multe ori, în aceste cazuri este
mai bine să stocăm rezultatul ș i să-l reutilizăm în loc să facem comparaț ia de mai multe ori
ori.

De asemenea, se întâmplă să trebuiască să tratăm mai mult de două cazuri, adică există situaț ii în care
umsee umsenaonão nu sunt suficiente pentru a îndeplini toate condiț iile, vezi acest exemplu:
Un elev care obț ine peste 7 este deja aprobat, dacă obț ine 7 sau 6 va merge la recuperare ș i
sub acest lucru vei fi respins. Cum să faci?

nota =6
dacă nota >7:
Aprobat
altfel:
dacă nota == 7 sau nota == 6:

Recuperare
altfel:
Reprobat

Poț i să pui mai multe comenzidacăealtfelaninhados, adică, unul în interiorul celuilalt.


Acest cod va funcț iona fără probleme, dar asta nu înseamnă că aceasta este cea mai bună modalitate de
a face asta.

16
Desvios condiț ionale, făcând programul să ia decizii

Pentru cazurile în care este necesară o expresie: altfel dacă, utilizaț i comandaelif. Este
comando este o fuziune a celor două anterioare. El funcț ionează ca undacă, dar va fi doar
testat cazul odacăanterior ter rezultat înFals, vezi:

dacă nota >7:


Aprobat

elifnota ==7ornota ==6:


Recuperare

altfel:
Reprobat

Acest exemplu este destul de simplu, dar deja ne ajută să înț elegem utilizareaelif. É
este important să subliniem de asemenea că acest comandament de desconsiderare permite doar undacăe um
altelecare sunt conectate, dar poț i insera câteelifforem necesare.

Valori de încredere
Un alt concept interesant în Python este problema valorilor True, acest concept defineș te
când valorile sunt de încredere, sau adevărate pentru utilizare. De exemplu, în cazul unui
număr, orice valoare care este diferită de zero este o valoare de încredere (inclusiv numere
negativi).

Acelaș i lucru se aplică pentru texte (ș iruri), orice text diferit de gol este considerat
ca fiind de încredere, adică, doar valoarea "" nu este.

Această funcț ionalitate permite ca variabila să fie evaluată direct, fără a fi nevoie să
fă comparaț ia, vezi exemplul cu o valoare întreagă:

valor =4

dacă valoarea != 0:

Valoarea nu este zero

ifvalor
Valoarea nu este zero

Cele două coduri vor face acelaș i lucru, dar a doua formă este ș i mai simplă! O
de asemenea se aplică pentru ș iruri:

17
Desvios condiț ionale, făcând ca programul tău să ia decizii

teste

iftexto !="":
print("Textul nu este gol")

iftexto:
print("Textul nu este gol")

O altceva pe care putem să-l explorăm, în mod normal, este problema condiț iilor multiple.
Putem folosi operatoriinu, ș ei saupentru a crea o condiț ie a aceleaș i
forma pe care o folosim pentru atribuirea unei valori logice.

nota1 =7
nota2 =10

dacă nota1 >5 ș i nota2 >=7:


Aprobat

deu_sol =True

dacă nu notdeu_sol:

A plouat

În cele din urmă, există încă o modalitate de a descrie comandadacă.

Această altă formă este cunoscută sub numele de condiț ie ternară. Este utilizată în principal pentru
condiț ii scurte ș i permite o sintaxă mai agilă, de obicei de o singură linie.

Ordinea lucrurilor se schimbă puț in, dar încă seamănă destul de mult cu limbajul natural.
Vezi această frază:

El a fost aprobat dacă a obț inut 7 sau mai mult, altfel el a fost respins.

Să traducem asta în Python cu comanda pe care o cunoaș tem deja:

6
daca nota >=7:
Aprobat
altfel:
Reprobat

Acum vezi cum arată aceeaș i operaț iune când folosim o condiț ie ternară

nota =6
print("Aprobado" if nota >= 7 else "Reprobado")

18
Desvii condiț ionali, făcând programul tău să ia decizii

Ordinea cuvintelor se schimbă puț in, dar nu te speria, mergem încet că în curând
te obiș nuieș ti.

Hai să practicăm
1. Fă un algoritm care solicită 3 note utilizatorului, calculează media ș i indică dacă
elevul a fost aprobat sau respins (nota trebuie să fie mai mare sau egală cu ș apte pentru ca elevul
a fi aprobat).

2. Fă un algoritm care să solicite anul în care utilizatorul s-a născut, după aceea, fă
programa descrie dacă utilizatorul va împlini sau a împlinit deja 18 ani în acest an.

3. Fă un program care îi solicită utilizatorului vârsta, după care afi ș ează


clasificare pe vârste în funcț ie de intervalele de valori:

Copil de la 0 la 11 ani;
Adolescente cu vârste între 12 ș i 18 ani;

Tânăr între 19 ș i 24 de ani;


Adult între 25 ș i 40 de ani;
Vârsta mijlocie pentru 41 până la 60 de ani;

Persoană în vârstă de peste 60 de ani.

4. Fă un program care să solicite utilizatorului 2 valori, folosind o condi ț ie ternară pentru


scrie care este cea mai mare valoare: prima sau a doua (în cazul în care valorile sunt egale,
consideraț i un al doilea).

Atenț ie

Este puternic recomandat să încerci să faci exerciț iile înainte de a vedea


răspunsuri. Poț i găsi răspunsurileaici.

19
Valori None, ș iruri ș i liste

Capitolul 4 - Valori None, Stringuri ș i Liste


În acest moment, ar trebui să fii capabil să creezi variabile ș i să creezi ramificaț ii condiț ionale în programul tău.

programa. Dar, să facem un pas înapoi ș i să ne uităm puț in mai atent


câteva caracteristici ale tipurilor în Python!

Să începem prin a prezenta un nou tip de valoare, valorileNone .

ValoriNiciunulsunt utilizate pentru a descrie variabile care au fost create, dar care nu
nu avem nicio valoare asociată cu ele. Aș teaptă, ce vrei să spui?

I explain.

Pentru a folosi o variabilă, trebuie să o declari mai întâi, nu-i aș a? Hai să facem un test!
Execută codul de mai jos:

print(teste)

Simplu astfel, doar un rând de cod.

Acest cod, oricât de simplu ș i inofensiv ar putea părea, generează o eroare în el.
aplicaț ie.

Această eroare apare deoarece variabilatestenu a fost creat în prealabil, atunci se întâmplă ce
numimNameError.

Dar ce dacă nu vrem să se întâmple această eroare, dar în acelaș i timp nici ...
dorim să alocăm memorie pentru variabilăteste, cum să faci? - Foloseș te-oNiciunul!

None
print(teste)

Problema rezolvat!

Un alt punct important este că abaterile condiț ionale vor rezulta întotdeauna înFalscând
realizat cu o variabilă care conț ine valoareaNiciunul:

None

ifteste
print(teste)# -> nu va fi executat

Destul de simplu, nu?

20
Valori None, Stringuri ș i Liste

Explorând un pic mai mult ș irurile


Am folosit de câteva ori variabile de tip string, dar mai este mult de lucru de făcut!

Acest tip permite o desfăș urarea unei serii de operaț iuni diferite. Putem verifica dacă textul conț ine
Numai cifre, puneț i prima literă cu majusculă, înlocuiț i o literă din text ș i multe
alte lucruri.

Toate aceste operaț ii se numesc funcț ii. Acesta este un concept destul de puternic.
în limbajele de programare.

Prin definiț ie, o funcț ie este un comportament care aparț ine ceva, în timp ce o
variabilă este o caracteristică a ceva.

Cum adică? - Imaginează-ț i o maș ină. Unele caracteristici ale maș inii tale sunt: cantitate de
uș i, cor, marcă, an ș i aș a mai departe. Toate aceste caracteristici pot fi
transcrise pentru un program sub formă de variabile.

Dar maș ina ta se porneș te, accelerează ș i frânează. Toate aceste lucruri sunt comportamente, sau
seja, sunt acț iuni ale maș inii. Acț iunile sunt traduse pentru un program prin funcț ii.

Dar nu te panică, este foarte uș or de folosit!

Să facem primul exemplu împreună, să transformăm prima literă a unui ș ir


în Majuscule, vom face acest lucru prin funcț iaCAPITALIZE:

gabriel
[Link]()
print(nome_maiusculo)# -> Gabriel

Observaț i că atunci când executăm o funcț ie este necesar să utilizăm() , asta se întâmplă deoarece
există cazuri în care trebuie să informăm valorile pentru a efectua o acț iune, pentru a înlocui
o scrisoare cu funcț iaînlocui ț i, de exemplu.

În acest caz trebuie să informăm două valori diferite: prima indică litera care va fi
substituită ș i al doilea indică litera care o va înlocui, vezi:

gabriel
[Link]('e','a')
print(nome_com_letra_alterada)# -> gabrial

Aceste valori care sunt transmise unei funcț ii se numesc parametrii.

O altă funcț ie foarte utilă în ș iruri este funcț iaformat, ea permite, aș a cum sugerează numele,
formatarea textelor.

21
Valori None, Ș iruri ș i Liste

Deci pot pune un text în italice? - Nu, nu vorbim despre acest tip de
formatare.

În acest context, funcț iaformatpermite să amesteci un text liber cu variabile sau


valori, vezi un exemplu!

Salut {0}
Olá Gabriel

Ok, dar asta a devenit prea confuz! - Calm, nu e nimic serios.

Ce face funcț iaformatfaz este a înlocui în text formatarea{N}prin parametru N.


Unde N este ordinea parametrilor, începând cu zero (0). Iată un alt exemplu:

Salut {0}, mă numesc {1}


Salut Gabriel, mă numesc Python

Viu doar? Primul parametru a intrat în locul de"{0}", al doilea în loc de{1}e
aș a mai departe!

Dar ce se întâmplă dacă punem mai mult de unul{0}? Hai să testăm!

Salut {0}, mă numesc {1}. {0}


Salut Gabriel, mă numesc Python. Gabriel

Aș a cum poate fi văzut în cod, toate apariț iile acestei formate sunt înlocuite
pe parametrul!

De fapt, există o a doua modalitate de a combina text liber cu variabile, ea se


apelează interpolarea de ș iruri.

Eu consider că această sintaxă este mai simplă de înț eles. Pentru a face o interpolare de
trebuie să punem litera "f" înainte de string.

Cu această notare, sintaxa nu mai este bazată pe poziț ia parametrului, este suficient
colocăm direct numele variabilei între acolade.

Salut {nome_maiusculo}
Salut Gabriel

O problemă a acestei abordări este că nu toate uneltele de dezvoltare


înț elegem interpolarea, aș a că poate că va trebui să tastezi numele variabilei într-un text,
ce poate cauza o eroare în aplicaț ia ta, în cazul în care scrii greș it numele variabilei.

22
Valori None, Linii ș i Liste

Acum mergem la ultima funcț ie de ș iruri pe care o voi arăta aici, se numeș teîmpăr ț iț i!

Această funcț ie este foarte utilă ș i destul de populară. În acest caz, am ales un caracter pentru
a sparge textul în părț i diferite. De exemplu, imaginează-ț i o variabilă cu următoarele
valorfarfurie, .
furculi ț ă, pahar

Această variabilă conț ine numele unor articole de bucătărie, dar ce s-ar întâmpla dacă ar trebui să le separăm-

puț in? -Simplu, foloseș te funcț iadivizaseparând valorile prin virgulă!

prăjitură, furculi ț ă, pahar


print(itens_cozinha.split(','))# -> ["farfurie", "furculiț ă", "pahar"]

Ce sunt aceste paranteze? Să înț elegem ce se întâmplă.

Când utilizăm funcț iadivizaîmpărț im textul în mai multe bucăț i diferite, până la urmă,
acum avem trei articole în loc de un text.

Dar dacă putem stoca doar o valoare într-o variabilă, cum am păstra cele 3 articole?

Pentru norocul nostru, există un tip special numit chamadolista. Acest tip funcț ionează ca o colecț ie.
de valori, foloseș ti doar un identificator/nume pentru a accesa mai multe valori
diferente.

Hai să salvăm rezultatul împărț irii într-o variabilă, vezi:

itens_cuisine.split(",")

Ok, dar acum cum fac să accesez valorile individuale? -Simplu, folosim un
indice.

Nu-ț i face griji, este destul de simplu, până la urmă ai lucrat deja cu indecș i în funcț [Link],
Asta este corect, indicii sunt numere secvenț iale care, în cazul Python, încep cu zero.
(0).

În cazul listelor, folosim paranteze pentru a defini indicii, vezi:

itens_cu машин ernează a a se spăla.


print(itens[0])# -> farfurie
print(itens[1])# -> furculiț ă
print(itens[2])# -> pahar

Întotdeauna trebuie să fim atenț i când accesăm un indice, deoarece atunci când accesăm indicaț ii
dincolo de limitele listei se generează o eroare!

23
Valori None, Strings ș i Liste

print(itens[3])# -> Genera o eroare

Aminteș te-ț i că întotdeauna cel mai mare indice al listei va fi egal cu dimensiunea sa - 1, în
în exemplul nostru avem trei elemente diferite, astfel încât ultimul indice valid este 2.

Hai să practicăm!
1. Fă un program care să solicite numele utilizatorului ș i după aceea să facă o salutare
Salut {nume introdus de utilizator}

2. Fă un program care să solicite un mesaj oarecare pentru utilizator ș i să afi ș eze acesta
MESAJ CU TOATE LITERELE ÎN MARI.

3. Fă un program care solicită vârsta utilizatorului, verifică dacă textul introdus este doar
conț ine numere. Dacă conț ine doar numere, afiș aț i mesajul: "Ai
{idade digitada} ani.
invalidă.

4. Face ț i un program care să solicite numele complet al utilizatorului ș i să afi ș eze doar al său
al doilea nume / primul nume de familie.

Atenț ie

Unele exerciț ii folosesc funcț ii care nu au fost arătate în această postare, poț i
căutaț i-le prin intermediul internetului, documentaț ia Python sau pur ș i simplu introduceț i ș irul
în Visual Studio, apasă ctrl + spaț iu (va arăta funcț iile disponibile).

Este foarte recomandat să încerci să faci exerciț iile înainte de a vedea


răspunsuri. Poț i găsi răspunsurileaici.

24
Listas

Capitolul 5 - Operaț ii cu Liste


Dacă ai exersat în Python, cu siguranț ă te-ai confruntat cu problema creării
de variabile pentru a descrie liste, de exemplu, un set de studenț i, un set de
maș ini parcate sau chiar o listă de cumpărături!

Nu trebuie să creezi o variabilă pentru fiecare element din listă! Aș a cum am văzut în capitol
în trecut, poț i manipula multiple valori sub o singură variabilă. Aceste variabile se
listacall!

La fel ca exemplele descrise anterior, orice tip de informaț ie care trebuie să fie
agrupată într-un fel de set utilizează această resursă, un exemplu în acest sens a fost funcț ia
împăr ț c
ie am văzut în Capitolul anterior.

Haideț i să începem prin a vedea cum se creează o listă goală, adică o variabilă care să se identifice
cu un tip listă, chiar dacă nu conț ine nimic în interiorul său, la fel ca multe alte lucruri,
este foarte simplu să defineș ti o listă în Python, trebuie doar să declari numele variabilei ș i să foloseș ti

colchete goale, vezi:

lista_de_compras = []

Simplu aș a! În plus, poț i crea lista deja incluzând câteva elemente în ea!
Basta să separi fiecare element al listei cu virgulă!

lista_de_compras = ["Pão","Água","Leite","Ovos"]

Observaț i că fiecare element din listă este iniț ializat individual ș i separat prin virgulă. Dumneavoastră
Ț i-aduce aminte cum accesăm fiecare element din listă? -Prin indexul său!

print(lista_de_compras[0])# -> Pâine


print(lista_de_compras[1])# -> Apă
print(lista_de_compras[2])# -> Lapte
print(lista_de_compras[3])# -> Ouă

Este important să ne amintim că indicele începe întotdeauna de la zero, încercând să obț inem primul element
utilizarea indicelui 1 este o eroare destul de comună printre începători, dar cu timpul te obiș nuieș ti

acostuma.

Un punct interesant în Python este că poț i accesa lista ș i de la sfârș it înapoi.


frente, dar acum indicele începe de la -1:

25
Listă

print(lista_de_compras[-1])
print(lista_de_comenzi[-2])
print(lista_de_compară[-3])
print(lista_de_comparare[-4])

Încearcă să îț i imaginezi lista conform desenului de mai jos:

Poț i schimba valoarea unui element dintr-o listă la fel de uș or precum o obț ii, doar foloseș te-l
indice e realizaț i modificarea ca o variabilă normală.

Suc de portocale

Codul schimbă elementul "Laptele" în "Suc de Portocale", funcț ionând la fel ca


o variabilă comună.

Până acum am schimbat doar valoarea unor elemente deja existente, dar dacă va trebui să adăugăm un
item nou, cum facem?

Ce se întâmplă dacă încercăm să accesăm poziț ia după sfârș itul listei? -În cazul nostru, a
poziț ia 4. Vezi:

Cafea

Acest cod nu va funcț iona, deoarece această atribuire trebuie folosită doar pentru a modifica
valoarea articolelor deja existente!

Pentru a include un nou element, este necesar să foloseș ti funcț iaata ș aț ei informând un element că
va fi adăugat pe listă, conform exemplului.

lista_de_compras.append("Cafenea")

26
Liste

Acum da!

Atunci când foloseș tiadăuga, adăugăm un element la sfârș itul listei, adică va fi ultimul
element. În plus faț ă deadăugaexistă diverse alte funcț ii ș i resurse cu care să lucrăm
cu liste. Una dintre resursele disponibile este cuvântul rezervatîn.

Putem folosi această comandă pentru a verifica dacă un articol este în listă, trebuie doar să utilizăm

următoarea sintaxă:element în listă, aceasta va returna o valoare logicăAdevărattuFals,


în funcț ie de faptul dacă lista conț ine sau nu elementul informat.

Aceasta ne permite să creăm deviaț ii condiț ionale, de exemplu, vezi:

dacă "Café" în lista_de_compras:


Trebuie să cumpăr cafea

Foarte simplu, nu-i aș a?

O altă sarcină obiș nuită este necesitatea de a număra câte articole are o anumită listă
poseda, pentru a face asta folosim funcț ialungimeîmbibată în limbaj.

Funcț ialeneste o abreviere pentru paralength, cuvânt în engleză pentru dimensiune. Această funcț ie
trebuie să primească o listă ca parametru ș i va returna un întreg cu cantitatea de
elemente.

len( lista_de_compras )# -> 5

Observaț i că cantitatea de elemente nu este acelaș i lucru cu poziț ia maximă a


indice. În exemplul nostru, lista conț ine cinci elemente, aș adar avem ca indici validaț i
0 până la 4.

Am văzut deja cum să adăugăm elemente într-o listă, cum să verificăm dacă un element este conț inut în ea ș i
până la verificarea cantităț ii de articole, dar încă nu am văzut cum să eliminăm un articol din listă.
Vreo idee?

Mulț i începători încearcă să efectueze următoarea operaț iune:

lista_de_compras[2] =None

Raciularea până la urmă are un oarecare sens, dacă spun că nu există nimic în poziț ia 2,
deci acest element nu ar trebui să existe, nu-i aș a? -Greș it.

Când efectuaț i operaț iunea de mai sus, veț i spune că elementul de pe poziț ia 2 nu conț ine nimic ș i nu
că nu există un element în poziț ia 2. Observi diferenț a subtilă?

27
Listele

În primul caz, spui că poziț ia 2 există, dar nu este nimic în ea, în timp ce în
în al doilea caz, o elimini din listă.

Ok, dar cum facem pentru a o elimina din listă? La fel cum avem o
abreviere paralenghttambém există o abreviere paradelete. Acest comanda se numeș te
del.

Să eliminăm ouăle (poziț ia 3) din lista noastră de cumpărături!

lista_de_cumpărături

Simples aș a.

Acum este important să observi că poziț ia 3 nu va înceta să existe. Ceea ce se întâmplă de


Fata, este că toate articolele care erau într-o poziț ie mai mare decât a articolului exclus sunt
deslocaț i o poziț ie spre stânga.

Adică, aveam cafeaua pe poziț ia 4 ș i acum este pe poziț ia 3, făcând astfel ca


poziț ia 4 încetează să existe.

Hai să înț elegem mai bine fiecare funcț ie cu câteva exerciț ii!

Haide să practicăm

1. Fă un program care să ini ț ializeze o listă cu numele persoanelor din familia ta.

2. Fă un program care ini ț ializează o listă goală ș i solicită utilizatorului 3 nume de


oraș e, câte unul pe rând, de fiecare dată când utilizatorul introduce un nume, programul trebuie să includă

este nume în lista de oraș e.

3. Fă un program care să ini ț ializeze o listă cu mai multe numere diferite, apoi
disso, solicită utilizatorului un număr, verifică dacă numărul este sau nu în listă ș i afiș ează
un mesaj notificând utilizatorul despre rezultat.

4. Fă un program care să ini ț ializeze o listă goală ș i să o umple cu 5 nume diferite


introduse de utilizator, după asta cere un număr de la 0 la 4 ș i elimină elementul
această poziț ie.

Atenț ie

Este recomandat cu tărie să încerci să faci exerciț iile înainte de a vedea


răspunsuri. Poț i găsi răspunsurileaici.

28
Listă

29
Laț uri de Repetiț ie - I

Capitolul 6 - Legături de Repetiț ie - Partea 1


În acest capitol vom vedea una dintre cele mai importante resurse din orice limbaj de
programare: Buclele de repetiț ie, cunoscute ș i sub numele de loops.

În capitolul anterior a fost explicat modul de funcț ionare al listelor, aș a că vom continua să folosim
listează aici.

Trebuie să-ț i aminteș ti cum accesăm un element dintr-o listă, nu-i aș a?

prin intermediul indicelui său! Să facem un exemplu creând o listă de zece numere, iată:

numeros = [10,20,30,40,50,60,70,80,90,100]

Cum am face să imprimăm fiecare număr în mod individual în consolă?

numeros = [10,20,30,40,50,60,70,80,90,100]

print(numeros[0])
print(numeros[1])
print(numeros[2])
printa(numeros[3])
print(numeros[4])
print(numeros[5])
print(numeros[6])
print(numeros[7])
print(numeros[8])
print(numeros[9])

Observă că această sarcină este destul de laborioasă, în plus, putem avea probleme cu
liste mai mari. Acest tip de sarcină repetitivă poate fi înlocuit cu o buclă de repetare!

Iată o altă modalitate de a realiza această sarcină:

numeros = [10,20,30,40,50,60,70,80,90,100]

fornumeroinnumeros
print(numero)

Mult mai simplu, nu-i aș a? Dar liniș te, să înț elegem cum funcț ionează acesta
comando.

30
Laț uri de Repetiț ie - I

Pentru rezultat, este remarcabil că instrucț iunile de mai jos ale comenziipentruexecutăm mai mult de
odată, de fapt acesta este motivul pentru care se numesc bucle de repetare. Pentru că repetă
instrucț iuni până la un anumit punct.

Hai să mergem, mai întâi sintaxa pentru comanda: este necesar să foloseș ti cuvântul rezervatpentru
pentru a începe comanda, similar cu ceea ce am făcut cu comandadacă.

Aș a că declarăm o variabilă, urmată de comandaîne numele unei variabile care


fii o listă.

Com această structură definim că, variabila pe care am creat-o ( număr, în exemplul nostru)
va primi un element din listă la fiecare interacț iune a buclei, adică mai întâi variabilanumăr
primeș te primul valoare din listă, execută toate operaț iile din bucla de repetare (în acest
cazul doar un print) ș i se întoarce la începutul blocului, schimbând valoarea variabilei pentru o
următorul element de pe listă.

Acest lucru se întâmplă până când lista ajunge la sfârș it, moment în care bucla de repetare este încheiată ș i

programa va continua normal.

Mas atunci putem folosi bucla de repetare doar pentru a parcurge liste? -Definitiv,
nu.

Putem să le folosim ș i pentru a repeta o serie de instrucț iuni, chiar dacă nu există o
lista implicată, pentru a face asta avem funcț iadomeniudisponibil în Python.

Această funcț ie permite crearea de liste la cerere, vezi:

valor =0
pentru indice în interval (5):

valor +=10
printa(valor)

În acest caz vor fi afiș ate valorile: 10, 20, 30, 40 ș i 50. Acest lucru se datorează faptului că funcț iagamă

indică că bucla trebuie repetată de 5 ori. Pentru a se asigura de acest lucru, ea creează o listă cu
valores [0, 1, 2, 3, 4].

Această funcț ie creează o listă în acest format în mod implicit, dar este posibil să schimbi acest

comportament prin parametrii. Este posibil, de exemplu, să foloseș ti doi parametrii


diferente, unul cu valoarea iniț ială ș i altul cu valoarea limită.

pentru valoare în intervalul(5,10):

printa(valor)

În acest caz, lista creată va conț ine valorile: [5, 6, 7, 8, 9]. Observaț i că valoarea limită nu este niciodată
inclus în listă, el de fapt defineș te limita acesteia ș i nu valoarea ei finală.

31
Liãuri de Repeṭiț ie - I

Un ultim modificator posibil în funcț iegamăeste saltul între fiecare valoare. Putem
specificaț i ca valorile să crească cu câte două, cu câte zece ș i aș a mai departe. E suficient
vom adăuga un ultim parametru!

pentru valoare în intervalul (0,10,2):

print(valor)

În acest caz, lista rezultată este: [0, 2, 4, 6, 8], foarte fain, nu-i aș a?

Acum că am văzut variaț iile degamăE deste comando, vom practica!

Haide să practicăm
1. Fă un program care să ini ț ializeze o listă de cumpărături cu 5 articole diferite ș i să le afi ș eze
toate folosind un bucle de repetare.

2. Fă un program care să ini ț ializeze o listă cu valorile de la 1 la 10 ș i apoi


exibă doar numerele pare.

3. Face ț i un program care să afi ș eze toate valorile impar între 50 ș i 100 utilizând
gamă.

4. Fă un program care să ini ț ializeze o listă goală, să solicite utilizatorului 10 numere


diferente, câte unul pe rând. În cazul în care numărul introdus este par, adăugaț i unul la valoarea sa.

După asta, afiș aț i cele 10 numere introduse.

5. Fă un program care să afi ș eze tablele înmul ț irii de la 1 la 10 în formatul: "2 x 3 = 6", (utilizează
două comenzipentru)

Atenț ie

Este recomandat cu tărie să încercaț i să faceț i exerciț iile înainte de a vedea


răspunsuri. Puteț i găsi răspunsurileaici.

32
Lecț ii de Repetiț ie - II

Capitolul 7 - Legături de Repetiț ie - Partea 2


Capitolul anterior a introdus conceptul de bucle de repetare utilizând comandapentru.
Dar aceasta nu este singura modalitate de a realiza acest tip de operaț iune!

În plus faț ă depentru, avem comandaîn timp ce!

Sintaxa ta este puț in diferită de sintaxapentru, dar foarte asemănătoare cu sintaxa lui
comandădacă, dar nu te înș ela, asemănările dintredacăe oîn timp cene oprim aici.

Pentru scopuri de exemplu, vom folosi aceeaș i listă din capitolul trecut!

numeros = [10,20,30,40,50,60,70,80,90,100]

Ideea din spatele comenziiîn timp cea repeta o o sarcină atâta timp cât o condiț ie este îndeplinită

adevărată, adică, în declaraț ia comenzii trebuie să facem o comparaț ie, în cazul în care
această comparaț ie să fie adevărată, blocul de instrucț iuni alîn timp ceva fi executat.

Programul se va întoarce la începutul blocului după ce ultima instrucț iune a acestui comandament va fi
executată, făcând din nou comparaț ia.

Când această comparaț ie va rezulta într-o valoareFalsun bloc de instrucț iuni alîn timp ce
va fi suspendat ș i programul va continua normal. Să facem un exemplu?

Hai să imprimăm toate numerele din listănumere, uite:

numeros = [10,20,30,40,50,60,70,80,90,100]

posicao =0
whileposicao < len(numeros):
print(numeros[posicao])
pozi ț ia +=1

Observaț i că ajunge să fie puț in diferit de [Link]În acest caz, avem nevoie
a stoca poziț ia listei într-o variabilă ș i a o schimba manual la fiecare repetare a
laț

Acest lucru poate cauza o problemă serioasă în programul tău! Dacă dintr-un motiv uităm să
schimbaţi valorile care fac comparaţia cuîn timp ceputem rămâne blocaț i într-un ciclu
infinito, adică programul nostru nu se va termina niciodată!

Haideț i să facem experimentele! Elimină instrucț iunea care adaugă 1 la variabilă.pozi ț iee
executa un program:

33
Lacuri de Repetiț ie - II

numeros = [10,20,30,40,50,60,70,80,90,100]

posicao =0
whileposicao < len(numeros):
print(numeros[posicao])

Prin urmare, nu uita să schimbi valorile care influenț ează comparaț ia!

Dacă dintr-un motiv aleatoriu decizi că vrei să faci o buclă de repetare infinită,
basta utiliza comanda în acest mod:

în timp ce adevărat:

INFINIT

În loc să facem o comparaț ie, marcăm direct rezultatul lui


comparare caAdevărat, dar ai grijă, asta ar putea merge prost!

Acum mergem la două comenzi noi care pot fi utilizate într-o buclă de
repetiț ie, trebuie să spun că nu-mi plac niciunul dintre ei, dar ei există ș i nu intenț ionez
ignoră-i.

Sunt ei:continuae opauză, amândouă interferează în interacț iunile buclei de repetare.

34
Lacuri de Repetiț ie - II

Comandacontinuareface ca bucla de repetare să revină la începutul blocului, adică


pentru a continua cu următoarea iteraț ie, dar întrerupe imediat interacț iunea
actual.

Hai să facem un exemplu pentru a scrie toate elementele listei de numere, cu excepț ia a
poziț ia 5:

posicao =0
în timp ce pozi ț ia < len(numere):
pozi ț ie +=1
ifposicao == 5:
continuă
print(numeros[posiț ia-1])

Iată întrebarea care mă face să nu-mi placă această instrucț iune, poț i pur ș i simplu să o rearanjezi
instrucț iunile pentru a nu fi necesar să foloseș ticontinuare, vezi:

posicao =0
whileposicao < len(numeros):
pozi ț ie +=1
dacă pozi ț ia !=5:
print(numeros[posicao-1])

Rezultatul final este acelaș i ș i în acest caz nu întrerupi fluxul principal al


programa.

Cealaltă instrucț iune estepauză, în acest caz întreruperea este mai agresivă, ea întrerupe
propriu laț de repetare întreg, nu doar iteraț ia actuală.

Asta înseamnă că, atunci când folosim comandapauzăhaide să ieș im din bucla de repetare
chiar dacă comparaț ia este încă adevărată, inclusiv ruperea buclelor infinite.

posicao =0
whileposicao < len(numeros):
posi ț ie +=1
dacă pozi ț ia == 5:
pauză
print(numeros[posicao-1])

Cu codul de mai sus, s-ar afiș a numerele de la poziț ia 0 până la poziț ia 4. Niciunul
numărul după poziț ia 4 va fi afiș at în consolă, deoarecepauzăinterrompeau tot
îndoire de repetare.

35
Legături de Repetiț ie - II

Strategia pentru a evitapauzăe simplu. Dacă îl foloseș ti, probabil că...


logica de verificare în bucla de repetare nu îș i îndeplineș te rolul. În exemplul de mai sus
nu vrem să parcurgem până la sfârș itul listei aș a cum sugerează condiț ia, ci până la a patra
poziț ie

posicao =0
în timp ce pozi ț ia <5:

print(numeros[positia])
pozi ț ie +=1

Hai să practicăm
1. Face ț i un program care să ini ț ializeze o listă de cumpărături cu 5 articole diferite ș i să o afi ș eze
toate folosind un ciclu de repetareîn timp ce.

2. Fă un program care să ini ț ializeze o listă cu valorile de la 1 la 10 ș i apoi să le afi ș eze


doar numerele pare utilizândîn timp ce.

3. Face ț i un program care să ini ț ializeze o listă goală, să ceară utilizatorului 10 numere
numere impare diferite, câte unul de fiecare dată. Dacă numărul introdus este par, cereț i din nou.
un număr, până când valoarea este un număr impar. După aceea, afiș aț i cele 10 numere
digitale.

4. Face ț i un program care să afi ș eze un meniu pentru utilizator să selecteze una dintre cele trei op ț iuni:

1 - Bună lume
Eu programez în Python
3 - Laț uri de repetare

Programul trebuie să solicite utilizatorului una dintre cele 3 opț iuni, în cazul în care utilizatorul introduce o valoare

diferente das opț iuni (1, 2 sau 3), programul trebuie să prezinte din nou meniul de
opț iuni până când una dintre ele este aleasă. În cele din urmă, programul trebuie să afiș eze un mesaj
diferente pentru fiecare opț iune.

1. Elimină instruc ț iuneapauzăEste instrucț iuneacontinuado laço de repetição abaixo:

numeros = [1,2,3,4,5,6,7,8,9,10]
posicao =0
whileposicao < len(numeros):
pozitia +=1
daca pozitia == 3:
continua
elifposicao == 6:
pauză
print(numeros[posiț ia-1])

36
Legături de Repetiț ie - II

Atenț ie

Este puternic recomandat să încercaț i să faceț i exerciț iile înainte de a vedea


răspunsuri. Puteț i găsi răspunsurileaici.

37
Dicț ionare

Capitolul 8 - Foloseș te Dicț ionare!


În acest moment, ar trebui să fii deja familiarizat cu listele ș i buclele de repetiț ie, acum eș ti deja
În momentul în care vom crea mai multe structuri, de data aceasta, vom folosi dicț ionarele!

Dicț ionarele permit dezvoltatorului să stocheze cu uș urinț ă perechi cheie-valoare!


practică, asta înseamnă că reuș im să creăm o structură pentru a stoca mai mult de una
informaț ie corelată.

Imaginaț i-vă că doriț i să stocaț i date despre o persoană. Va trebui să păstraț i


nume, prenume, vârstă ș i câte alte informaț ii vor fi necesare. Este posibil să creaț i
toate aceste variabile separate? Dar, desigur, da!

O problemă a acestei abordări este că programul tău nu ar putea să relaț ioneze cu


informaț ii. Pentru programul tău este ca ș i cum acele variabile ar fi date separate
între ele, adică, fără nicio relaț ie.

Dacă ai văzut vreodată un obiect înJSON, vei vedea că există multe asemănări
între aceste două lucruri, vezi cum arată un dicț ionar în Python:

persoană
Gabriel
Schade
"idade":27
}

Aș a cum am menț ionat anterior, un dicț ionar organizează informaț iile în perechi în formatul
cheie-valoare. În exemplul de mai sus, cheile sunt: nume, prenume ș i vârstă, iar valorile
respectivii sunt: Gabriel, Schade ș i 27.

În cazul nostru, cheile sunt valori de tipș ir, dar nu există o obligaț ie
nisso (deș i este destul de comun) în timp ce valorile variază de obicei de
tipuri.

La fel ca în liste, putem modifica ș i obț ine valorile dintr-un dicț ionar, dar în acest caz
în loc să utilizăm un index, utilizăm o cheie. Aceasta face ca dicț ionarele
sunt extrem de simple de lucrat, vezi codul de mai jos:

Schade Cardoso

Acest cod este destul de asemănător cu modificarea valorii unui element din listă ș i face acelaș i lucru,
dar de data aceasta modificând o valoare dintr-un dicț ionar.

38
Dicț ionare

Putem face acelaș i proces pentru a obț ine o valoare din dicț ionar ș i a o stoca în
o altă variabilă, vezi:

pessoa["nome"]

Prin asta am reuș it să manipulăm informaț iile legate într-un singur dicț ionar.
Putem, de exemplu, să afiș ăm în consolă numele complet al persoanei:

print( persoana["nume"], persoana["prenume"] )

Când foloseș ti dicț ionare, trebuie să fii atent, deoarece dacă cheia nu există, aplicaț ia
va lansa o eroare! Fă testul:

persoana["cpf"]

Ș tiind asta, există o altă modalitate în Python de a obț ine o valoare dintr-un dicț ionar.
Putem face asta prin funcț iaob ț ine. Pentru această funcț ie trebuie să trimitem două
informaț ii: cheia ș i o valoare implicită pentru cazul în care cheia nu există.

[Link]("cpf", None)
print(cpf) # -> Niciunul

Prinob ț ineputem căuta o valoare într-un dicț ionar în mod sigur, făcând cu
să nu genereze erori aplicaț ia.

În afară de funcț ieobtine, de asemenea, sunt disponibile funcț iilecheievalori, ele


returnăm respectiv o listă conț inând toate cheile sau toate valorile ale
dicț ionar.

Să începem utilizând funcț iachei!

cheile
forchaveinchaves
print(chave)

Acelaș i lucru este valabil pentru a obț ine toate valorile:

valori
pentru valoare în valori

printa(valor)

39
Dicț ionare

Putem folosi aceste funcț ii pentru a scrie fiecare cheie ș i valoarea sa corespunzătoare, pentru
exemplu:

cheile = [Link]()
forchaveinchaves
valoare = persoană[cheie]
cheie:
tipări ț i( textul )

Codul de mai sus a fost separat pentru a clarifica paș ii instrucț iunilor, dar tu
poț i include toate aceste instrucț iuni într-o singură linie de cod dacă crezi că este mai bine
confortabil

cheile
forchaveinchaves
print( cheia, ":", str( persoana[cheia]) )

În cele din urmă, la fel cum am făcut cu listele, putem de asemenea să ș tergem un element din
dicț ionar cu comandadel. Este important de spus cădeleliminarea completă a
element cheie-valoare al dicț ionarului.

delpessoa

print(persoana["nume"])

Codul de mai sus va genera o eroare, deoarece de la momentul în care comandadelfoi


aplicată la cheia-valoare "nume de familie", ea încetează să mai existe în dicț ionar, prin urmare, ia în considerare

atenț ie!

Hai să practicăm
Fă un program care să creeze un dic ț ionar pentru a defini un produs, con ț inându-l
descrierea ș i preț ul său.

2. Fă un program care să ini ț ializeze o listă de cumpărături cu 5 articole diferite, unde


fiecare element este un dicț ionar care conț ine descrierea ș i preț ul produsului. După aceasta,
parcurge lista ș i afiș ează informaț iile fiecărui element.

3. Utilize lista de cumpărături a programului anterior pentru a identifica care este produsul cel mai
barat ș i care este cel mai scump produs din lista de cumpărături.

40
Dicț ionare

4. Fă un program care să aibă o listă cu 5 persoane, unde fiecare persoană î ș i are


nume ș i prenume stocate într-un dicț ionar, după care afiș aț i toate numele
e surnume. Pentru a complica puț in lucrurile, vom simula că aceste date
au fost obț inute de pe web ș i, cu aceasta, am primit unele inconsistenț e. Două din cele cinci
oameni
microscópico.

Atenț ie

Este foarte recomandat să încerci să faci exerciț iile înainte de a vedea


răspunsuri. Poț i găsi răspunsurileaici.

41
Modularizarea codului cu Funcț ii

Capitolul 9 - Modularizarea codului cu


Funcț ii
În acest capitol vom învăț a cum putem să împărț im codurile noastre în părț i
minore, adică, modularizându-l!

Haideț i să facem asta folosind propriile noastre funcț ii!

Acest capitol poate fi puț in mai teoretic decât cele anterioare, dar nu te îngrijora,
Hai să programăm destul de mult aici ș i noi!

Până în prezent, programăm soluț ii mici. Fiecare exerciț iu se baza pe


o problemă specifică pe care am reuș it să o rezolvăm cu câteva linii de cod, dar în
În aplicaț iile reale, este comun ca un singur program să rezolve diverse lucruri diferite.

Crearea de soluț ii mai complexe ș i programe mai mari devine o sarcină destul de
dificil să continuăm să programăm în modul în care o facem. Trebuie să facem în aș a fel încât ca
programul să fie separat în piese mai mici.

Astfel, de fiecare dată când va trebui să rezolvăm o problemă mai complexă,


putem conecta aceste piese pentru a forma o soluț ie.

Pentru aceasta, avem nevoie ca aceste piese să fie reutilizabile, la fel ca piesele de lego.

42
Modularizarea codului cu funcț ii

Aceste piese reutilizabile se numescfunc ț iiEle sunt formate dintr-un bloc de


cod care execută o anumită acț iune.

De fapt, în exerciț iile anterioare, am folosit deja funcț ii disponibile în Python


de mai multe ori. Oimprimaree ointraresunt exemple de funcț ii disponibile, dar cel mai
interesant în acest lucru este că putem defini funcț iile noastre!

În general, fiecare funcț ie ar trebui să efectueze o singură acț iune. În acest fel, devine mai
reutilizabil ș i util pentru programele tale.

Ori de câte ori când ai o funcț ie care îndeplineș te mai multe sarcini, fii atent, asta
probabil este un semn de cod prost. Poate că această funcț ie ar trebui să fie împărț ită în două
ou mai multe funcț ii.

Să vedem cum putem defini o funcț ie în codul nostru Python!

defola_mundo()
print("Salut lume")

În primul rând, este necesar să folosiț i cuvântul rezervatdef, această word este responsabilă pentru
definim o funcț ie. După aceea, includem numele funcț iei, acest nume trebuie să urmeze
aceleaș i reguli pentru numele variabilelor.

43
Modularizarea codului cu Funcț ii

În cele din urmă, includem caracterele() , începând de aici folosim: ș i toate


comenzile aparț inând acestui bloc urmează aceleaș i reguli ca comenzile deja văzute:
, , etc.
dacă în timp ce pentru

Dar există o diferenț ă importantă, când definim o funcț ie nu facem ca acei


comenzile să fie executate, descriem doar ce se va întâmpla când
executa această funcț ie.

Pentru a executa o funcț ie, trebuie să foloseș ti numele ei urmat de paranteze, vezi:

defola_mundo():# -> Defini ț ie


print("Bună lume")

ola_mundo()# -> Apel pentru a efectua execu ț ia

Puteț i pune în cadrul unei funcț ii câte comenzi doriț i ș i toate vor fi
execuț i imediat ce funcț ia este executată.

După ce o funcț ie este definită, este ca ș i cum apelul pentru a o executa ar fi un nou
comando do Python, a partir de agora, suntem creatori ai propriilor noastre instrucț iuni ș i ele
se comportă la fel ca funcț iile din Python.

Vezi cum decurge fluxul de execuț ie al programului având în vedere că această apelare este
realizată între operaț iuni pe care le-am văzut anterior.

numero =10
numero2 =15
ola_mundo()
rezultatul = numărul + numărul2

Ce se întâmplă în acest flux?

Bun, mai întâi cele două variabilenumărenumărul 2sunt declarate ș i valorile 10 ș i 15


sunt atribuite acestora respectiv. După aceste două linii iniț iale, funcț ia
ola_mundoeste executată.

Când se întâmplă asta, execuț ia codului principal se "îngheaț ă" pentru a executa toate
instruț iuni ale funcț iei. După aceea, se întoarce la următoarea instrucț iune.

44
Modularizarea codului cu funcț ii

Împărț irea unui algoritm în părț i mai mici ajută de asemenea mult la testabilitatea unui
programa. Va fi întotdeauna mai simplu să testezi un bloc mic decât programul pe
complet.

Parametri
Este comun să avem nevoie de date pentru a efectua un anumit tip de operaț iune. Iată funcț iaimprimare
de exemplu, sarcina acestei funcț ii este să scrie orice în consolă, nu-i aș a? -Aș a este.

Pentru a permite ca acest lucru să fie posibil, funcț iatipări ț pi reciza să primească un parametru. Nu
în cazul funcț iei print, parametrul este textul care va fi scris, dar parametrii pot fi
utilizate pentru sarcini diferite.

Să creăm o funcț ie care să ridice orice număr la pătrat!

defelevar_ao_quadrado(numar):
print(numero * număr)

45
Modularizarea codului cu funcț ii

Basta să plasezi parametrul între paranteze în definiț ia funcț iei!


utilizăm de mai multe ori funcț iaîmpingetrebuie să-ț i imaginezi cum am petrecut un număr
pentru această funcț ie, nu?

elevare_la_patrat(9)

Este interesant de observat că putem trece ș i variabile ș i expresii în parametru,


vezi doar:

elevat_la_patrat(9)
elevar_la_pătrat(4+5)
nouă
elevare_la_patrat(noua)

În toate cazurile, rezultatul funcț iei va fi acelaș i, căci transmitem acelaș i


parametru!

Acum vom crea o funcț ie care adună două numere diferite! Da, poț i crea
multiple parametrii! Trebuie doar să-i separi prin virgulă, vezi:

defsoma(numărul1, numărul2):
print(numero1 + numero2)

soma(2,5)# -> 7
6
soma(10,5)# -> 15

Legal, nu?

În plus, nu există restricț ii cu privire la tipul trimis prin parametru, vezi încă un exemplu:

defsaudare(nume):
print("Salut", nume)

Retururi
În afară de a primi informaț ii (parametrii), funcț iile pot produce, de asemenea, rezultate.
Aceste rezultate se numesc retururi.

Nu toate funcț iile produc rezultate, vezi funcț iasalutcreată anterior.


De fapt, ea nu trebuie să producă niciun rezultat.

46
Modularizarea codului cu Funcț ii

Pe de altă parte, nu are prea mult sens funcț iasomadoar scrie rezultatul sumei.
Funcț ia ar deveni mult mai reutilizabilă, producând un rezultat. În acest fel,
dezvoltatorul ar putea face ce vrea cu rezultatul, inclusiv să-l scrie.

De fiecare dată când trebuie să creăm un return utilizăm cuvântul rezervatreturna ț i. Ea face
cu aceeaș i funcț ie să producă un rezultat, la fel ca o expresie.

Să refactorizăm funcț iasoma:

defsoma(numărul1, numărul2):
returnează numărul1 + numărul2

Ok, dar cum să obț in rezultatul acestei funcț ii? -Simplu!

Este suficient să ne gândim că funcț ia începe să se comporte ca o expresie, aș adar reuș im


a efectua atribuiri, sume ș i orice altă operaț ie pe care am putea să o facem cu o
expresie. Uite:

suma(1,2)
print(resultado)# -> 3

rezultatul = suma(2,2) * 3
print(resultado)# -> 12

rezultatul = suma(5,5) - 2*5


print(resultado)# -> 0

print(soma(3,7))# -> 10

Cuvântul rezervatreturnaforț ează întreruperea funcț iei pentru ca rezultatul să fie


retornado, prin urmare este destul de obiș nuit ca acest comandament să fie la sfârș itul funcț iei. Cu toate acestea

De a nu exista nicio obligaț ie nu este o bună practică să întrerupi codul cu


umreturna ț i.

Veja acest exemplu:

defexemplu(valor):
numărul = valoare * 2
dacă numărul >10:
returnnumero

valoare = valoare + 5
returnvaloare

În acest exemplu, în cazul în care variabilanumărdacă este mai mare de 10, funcț ia va fi întreruptă.
Altfel, va fi returnată valoarea [Link] cu 5.

47
Modularizarea codului cu Funcț ii

Este important să înț elegi că acest cod nu este neapărat greș it, dar
se creează o complexitate care nu trebuie să existe, să păstrăm funcț ionalitatea ș i
reescrie-l pentru a avea doar o instrucț iune de returnare, vezi:

defexemplu(valor):
Niciun rezultat
număr = valoare * 2

dacă numărul > 10:

rezultat
altfel:
rezultatul = valoarea +5

returnează rezultatul

În acest fel, centralizăm regula în variabilărezultat, întotdeauna întorcând-o,


indiferent de ce valoare i-a fost atribuită.

În Python putem scurta această funcț ie puț in mai mult utilizând deviaț ia condiț ională
ternar

defexemplu(valor):
număr = valoare * 2
returneazănumăruldacănumărul>10altfelvalorea+5

Acum avem un cod mult mai scurt ș i simplu!

Astfel, am trecut prin toate conceptele implicate în crearea unei funcț ii!

Hai să practicăm
1. Fă un program care să scrie "Prima mea func ț ie", această scriere trebuie să fie
realizată ca urmare a apelului unei funcț ii.

2. Fă un program care solicită numele utilizatorului ș i vârsta utilizatorului, după care


{nume} are {vârstă} ani.
o funcț ie.

3. Fă un program care solicită utilizatorului două numere ș i afi ș ează multiplicarea acestora.
Înmulț irea trebuie calculată într-o funcț ie.

4. Faceti un program care să solicite utilizatorului trei numere diferite ș i să afi ș eze dublul acestora.
număr mai mare. Pentru a face asta, separaț i-vă codul în două funcț ii diferite: Una
funcț ie pentru a returna cel mai mare dintre cele trei numere ș i o altă funcț ie pentru a tripla numărul.

48
Modularizarea codului cu Funcț ii

5. Faceti un program care sa initializeze o lista goala, dupa care sa solicite 5 nume.
diferite pentru utilizator (utilizaț i un ciclu de repetare). Fiecare nume introdus trebuie să fie

adăugat la listă ș i în final, toate numele trebuie să fie scrise în consolă. Utilizează o
funcț ie pentru a solicita ș i returna numele introdus, o funcț ie pentru a adăuga numele la
lista (trecând numele ș i lista ca parametru) ș i o altă funcț ie pentru a scrie toate
nume pe consolă.

Atenț ie

Este foarte recomandat să încerci să faci exerciț iile înainte de a vedea


răspunsuri. Poț i găsi răspunsurileaici.

49
Expressii Lambda

Capitolul 10 - Expresiile Lambda


Acesta este ultimul capitol pentru introducerea în programare folosind Python, vom încheia
învăț are cu un tip diferit de funcț ie: expresiile lambda!

Pentru a înț elege acest post, este esenț ial să fi înț eles înainte subiectul.
capitolul anterior: funcț ii.

Toate caracteristicile unei funcț ii lambda sunt foarte asemănătoare cu funcț iile
comunele pe care le-am văzut, cu excepț ia a două lucruri: ele nu au o definiț ie în
cod, adică, sunt declarate ca variabile ș i nu au undefproprii; ș i ele sunt
funcț ii de o linie, care funcț ionează ca ș i cum ar exista instrucț iuneareturna ț îi nainte de
comandă.

defsoma(numărul1, numărul2):
returnnumero1 + numero2

Funcț ia de mai sus este o funcț ie de sumă normală, deoarece este o funcț ie de o singură linie, putem
transformă-o într-o funcț ie lambda sau într-o expresie lambda. Pentru asta, foloseș te
comandolambdaconforme cod:

soma_lambda = lambda numar1, numar2: numar1 + numar2

Observăm că sintaxa este puț in diferită, folosim cuvântul rezervatlambdapara


declară începutul expresiei, după care inserăm parametrii separaț i prin
virgulă. În final, punem corpul expresiei.

Amintind că corpul expresiei trebuie să conț ină întotdeauna doar o linie de comandă ș i
ea funcț ionează ca ș i cum ar exista o instrucț iune deîntoarceînainte de aceastã linie.

Prin urmare, cele două funcț ii de sumare sunt definiț ii diferite pentru aceeaș i funcț ie:

print(soma(1,2)) 3
print(soma_lambda(1,2))# -> 3

De asemenea, putem avea o funcț ie lambda fără parametrii, când este cazul, trebuie doar
omitem declaraț ia parametrilor în mod normal:

ob ț ine_valoare = lambda: 3 + 2

50
Expresiile Lambda

În practică, această funcț ie nu are atât de mult sens, dar este un exemplu bun pentru a înț elege
ce se întâmplă. În acest caz, am creat o funcț ie numităob ț ine_valoarece

întotdeauna returnează numărul cinci. Definiț ia standard a acestei funcț ii ar fi următoarea


mod

defobter_valor()
returnează3+2

Observă că unul dintre punctele forte ale expresiilor lambda este sintetizarea lor, acestea fiind o formă

rapidă de definit funcț ii simple.

Dar este pentru funcț ii fără returnare? -Nicio problemă!

ola =lambda: print('Salut lume')


Salut lume

Observă că folosim o funcț ie lambda care nu are return ș i nici parametri!


Dar totul va funcț iona corect.

Poate că te va mira puț in, deoarece am scris anterior că expresiile lambda


funcț ionăm ca ș i cum ar exista unreturnaînainte de instruire ș i funcț iaprintnu generează
retururi. Deci cum înț elege el?

În practică, poț i obț ine valoarea de returnare a funcț ieiimprimare, dar el va fi o valoare a
tipNimic! Prin urmare, aceeaș i sintaxă lambda continuă să funcț ioneze normal.

Utilizare
Ok, am înț eles conceptul, dar la ce foloseș te asta? Acum vine partea cea mai complicată
din această lecț ie, există funcț ii care pot primi alte funcț ii ca parametru!

Da, nu ai citit greș it, o funcț ie primeș te ca parametru o altă funcț ie. Acestea sunt
exemple în care expresiile lambda sunt cele mai folosite.

Hai să facem un exerciț iu folosind conceptele pe care deja le cunoaș tem ș i apoi să-l refacem.
utilizând expresii lambda!

Să declarăm o listă cu diverse numere diferite, după aceea, o vom copia


numai numerele pare pentru o a doua listă ș i le vom afiș a în consolă. Liniș tit,
sigur?

51
Expresii Lambda

numeros = [0,2,3,4,5,7]
pares = []
pentru număr din numere
dacă numărul %2==0:
[Link](numero)

# Afi ș ează numerele


forparinpares
print(par)

Folosim o ciclu de repetare pentru a filtra lista care conț ine toate
numere pentru o nouă listă care conț ine doar numerele pare.

În acest ciclu de repetare obț inem numerele câte unul, verificăm dacă este par sau nu ș i
dacă este cazul, îl adăugăm la lista de perechi.

Acest comportament de filtrare a unei liste este destul de comun, din acest motiv, limbajul
oferă o resursă pentru a simplifica această implementare. Această resursă este funcț iafiltru!

Această funcț ie primeș te doi parametri: unul dintre ei este lista care va fi filtrată, desigur, iar celălalt
parametrul este funcț ia care realizează filtrul listei!

Această funcț ie de filtrare trebuie să aibă doar un parametru (de acelaș i tip cu fiecare element)
da lista) e trebuie să returneze unboolean.

În acest fel, toate listele, de orice tip, pot folosi aceeaș i funcț iefiltru.

În cazul nostru, avem o listă de numere, prin urmare funcț ia noastră trebuie să primească un
numărul ș i returnează o valoare logică, în practică, este aceeaș i comparaț ie pe care am făcut-o deja în
implementare anterioară:numărul % 2 == 0, vezi cum facem acelaș i lucru folosind el
filter

numeros = [0,2,3,4,5,7]
pares = filtrează(lambdavalor: valor %2==0, numeros)

forparinpares
print(par)

Transformăm toată bucla noastră de repetare cu o deviaț ie condiț ionată într-o singură
instrucț iune! Legal, nu-i aș a?

Ofiltrunu este singura funcț ie capabilă să realizeze acest tip de operaț iune, dar este o bună
exemplu pentru a înț elege puterea expresiilor lambda!

Hai să practicăm

52
Expresiile Lambda

1. Fă un program care să scrie "Prima mea func ț ie", această scriere trebuie să fie
realizată pe baza apelului unei funcț ii care a fost declarată ca o expresie
lambda.

2. Faceti un program care solicita numele utilizatorului si varsta acestuia, dupa aceea
{nome} are {idade} ani.
o funcț ie lambda.

3. Fă un program care să solicite utilizatorului două numere ș i să afiseze înmul ț irea lor.
Înmulț irea trebuie calculată într-o funcț ie lambda.

4. Face ț i un program care să solicite utilizatorului cinci numere, după care să afi ș eze doar
numerele mai mari de 10. Utilizaț i funcț iafiltrupentru a face asta.

5. Fă un program care să solicite zece numere utilizatorului, apoi să afi ș eze toate
numere pare ș i doar apoi afiș aț i toate numerele impare. Utilizaț i funcț iafiltru
pentru a face asta.

Atenț ie

Se recomandă cu tărie să încerci să faci exerciț iile înainte de a vedea


răspunsuri. Puteț i găsi răspunsurileaici.

53
Concluzie

Concluzie
Obiectivul acestei cărț i este de a fi un punct de plecare pentru lumea programării, există
multe subiecte care nu au fost abordate aici, cum ar fi: programarea orientată pe obiecte, programare

funcț ional, programare web, inteligenț ă artificială ș i aș a mai departe.

Posibilităț ile sunt imense ș i totul este mai aproape de tine acum.

Nu considera această carte ca fiind singura sursă de studiu în niciun fel, există diverse
materiale disponibile online.

Sper că a fost o bună sursă de studiu ș i te rog să te simț i liber să-mi trimiti orice
tip de feedback!

54
Rezolvarea exerciț iilor

Rezolvarea exerciț iilor

Capitolul 2 - Începând cu Python


1. Faceț i un algoritm care solicită numele utilizatorului ș i apoi scrie numele persoanei în
consolă.

Introdu numele tău:


print(nume)

2. Fă un algoritm care să întrebe utilizatorul câț i ani are, apoi scrie


Adevăratnu console, în cazul în care el a atins deja vârsta majoratului (18 ani), altfel
scrieFals.

vârstă = int( input("Câ ț i ani ai? ") )


vârsta >= 18
printează(maioritate)

3. Fă un algoritm care să ceară un număr utilizatorului, după aceea să scrieAdevăratnu


console, în cazul în care numărul are două cifre (Să fie între 10 ș i 99), în caz contrar scrie
Fals.

numar = int( input("Introduce ț i un număr: ") )


două_cifre = numărul >= 10 ș i numărul <= 99
afiș ează(dois_digitos)

Capitolul 3 - Deese condiț ionale, făcându-le


programa de luare a deciziilor!

1. Fă un algoritm care să solicite 3 note utilizatorului, să calculeze media ș i să indice dacă


elevul a fost aprobat sau respins (nota trebuie să fie mai mare sau egală cu ș apte pentru ca elevul să fie)
aprovado).

55
Rezolvarea exerciț iilor

introduce ț i prima notă:


float(input("Introduceti a doua nota: "))
introduce ț i a treia notă:
media = (nota1 + nota2 + nota3) / 3

dacă media >=7:


Aprobado
altfel:
Reprobat

2. Fă un algoritm care solicită anul în care utilizatorul s-a născut, apoi fă


programa descrie dacă utilizatorul va face sau a împlinit deja 18 ani în acest an.

int (input ("Introduce ț i anul în care v-a ț i născut: "))


2018 - an_nastere

dacă vârsta == 18:

Utilizatorul va împlini 18 ani anul acesta.

3. Faceț i un program care să ceară utilizatorului vârsta sa, apoi să afiș eze clasificarea.
etară în conformitate cu intervalele de valori:

Copil între 0 ș i 11 ani;


Adolescente cu vârste între 12 ș i 18 ani;

Tânăr între 19 ș i 24 de ani;


Adulț i cu vârste între 25 ș i 40 de ani;

Vârsta medie pentru 41 până la 60 de ani;

Vârstnic peste 60 de ani.

56
Rezolvarea exerciț iilor

vârstă = int (input("Introduce ț i vârsta dumneavoastră: "))

dacă vârsta >= 0 ș i vârsta <= 11:

Copil

elifidade >= 12 ș i idate <= 18:


Adolescente

dacă vârsta >=19 ș i vârsta <=24:


Tânăr

elifidade >=25 ș i idade <=40:


Adult

elifidade >=41 ș i idade <=60:


Meia Idade

elifidate >60:
Vârstnic

4. Fă un program care să solicite utilizatorului 2 valori, foloseș te o condiț ie ternară pentru


scrie care este cea mai mare valoare: prima sau a doua (în cazul în care valorile sunt egale,
considera un al doilea)

primul_valor = int( input("Introduceti o valoare: "))


secund_valoare = int( input("Introduceti o valoare: "))
print("Primul" if primul_valor > al_doilea_valor else "Al doilea")

Capitolul 4 - Valori None, Stringuri ș i Introducere


à Listas
1. Fă un program care să ceară numele utilizatorului ș i apoi să facă o salutare.
Salut {numele introdus de utilizator}.

nume = input("Introdu numele tău: ")


print(f"Salut {nome}")

2. Fă un program care să solicite un mesaj orice utilizatorului ș i să afiș eze acesta


MESAJ CU TOATE LITERELE ÎN MARI.

Introduce ț i un mesaj:
print([Link]())

57
Rezolvarea exerciț iilor

3. Faceț i un program care solicită vârsta utilizatorului, verifică dacă textul introdus este doar
contine numere. In cazul in care contine doar numere, afiseaza mesajul: "Ai {varsta}
aț i introdus o vârstă invalidă.

[Link]():
Ai {idade} ani.
altfel:
Aț i introdus o vârstă invalidă

4. Fă un program care să ceară numele complet al utilizatorului ș i să afiș eze doar acesta
al doilea nume/numele de familie principal.

Introduce ț i-vă numele complet:


nume_complet_impartit = nume_complet.split(" ")
print(nome_completo_dividido[1])

Capitolul 5 - Operaț ii cu Liste


1. Fă un program care să initializeze o listă cu numele persoanelor din familia ta.

familia = ["Gabriel","Anderson","Luluzinha","Mariazinha","Joãozinho"]
print(familia)

2. Faceț i un program care să iniț ializeze o listă goală ș i să solicite utilizatorului 3 nume de
oraș e, câte unul pe rând, de fiecare dată când utilizatorul introduce un nume, programul trebuie să includă acest lucru

nume în lista de oraș e.

cidades = []

Introduce ț i numele primului ora ș :


c_tagă.append(c_tagă)

[Link](input("Introduceț i numele celui de-al doilea oraș : "))


[Link](input("Introduceț i numele celui de-al treilea oraș : "))
oraș e

3. Fă un program care să iniț ializeze o listă cu mai multe numere diferite, apoi,
solicita utilizatorului un număr, verifică dacă numărul se află sau nu în listă ș i afiș ează un
mesaj notificând utilizatorul despre rezultat.

58
Rezolvarea exerciț iilor

numeros = [1,3,6,10,5,23]
introduce ț i un număr:
dacă_numărul_a_foarte_multe_numere:

print(f"Numărul {numero_digitado} se află în listă")


altfel:
Numărul {numero_digitado} nu se află în listă

4. Fă un program care să iniț ializeze o listă goală ș i să o umple cu 5 nume diferite


introduse de utilizator, după aceasta solicită un număr de la 0 la 4 ș i elimină elementul
de la această poziț ie.

nomes = []
[Link](input("Introduceț i primul nume: "))
[Link](input("Introduceti al doilea nume: "))
[Link](input("Introduceț i al treilea nume: "))
[Link](input("Introduceti al patrulea nume: "))
[Link](input("Introdu numele cinci: "))

Alege ț i o pozi ț ie de la 0(zero) la patru pentru a exclude


uir da lista:
delnomes[posi ț ia_de_exclus]
print(numele)

Capitolul 6 - Legături de Repetiț ie - Partea 1


1. Fă un program care să initializeze o listă de cumpărături cu 5 articole diferite ș i să le afiș eze
toate utilizând o buclă de repetare.

itens_compra = ["Arroz","Leite","Ovos","Feijão","Tomate"]
foriteminitens_compra
afiseaza(item)

2. Fă un program care iniț ializează o listă cu valorile de la 1 la 10 ș i apoi


exiba doar numerele pare.

pentru numărul în intervalul (1,11):

dacă numărul % 2 == 0:

print(numero)

3. Fă un program care să afiș eze toate valorile impare între 50 ș i 100 folosind range.

pentru numere în intervalul (51,101,2):

print(numero)

59
Rezolvarea exerciț iilor

4. Fă un program care să initializeze o listă goală, să solicite utilizatorului 10 numere


diferente, câte unul. Dacă numărul introdus este par, adăugaț i unul la valoarea sa.
După asta, afiș aț i cele 10 numere introduse.

numeros = []
for numer in range(10):
item_digitado = int ( input("Introduceti o valoare: ") )
dacă(item_digitado %2==0):
item_digitado +=1
[Link](item_digitado)

pentru numărul în numere


print(numero)

5. Fă un program care să afiș eze tablele de înmulț ire de la 1 la 10 în formatul: "2 x 3 = 6", (foloseș te două
comenzipentru)

pentruoperatorinrange(1,11):
pentruoperator_2inrange(1,11):
rezultatul
print(f"{operator} X {operator_2} = {result}")

Capitolul 7 - Legături de Repetiț ie - Partea 2


1. Fă un program care să iniț ieze o listă de cumpărături cu 5 articole diferite ș i să le afiș eze
toate utilizând un ciclu de repetareîn timp ce.

itens_compra = ["Arroz","Leite","Ovos","Feijão","Tomate"]
posicao =0
în timp ce pozi ț ia < len(itens_compra):
print(itens_compra[posisia])
pozitie+=1

2. Fă un program care să iniț ializeze o listă cu valorile de la 1 la 10 ș i apoi să le afiș eze.


doar numerele pare utilizândîn timp ce.

numeros = [1,2,3,4,5,6,7,8,9,10]
posicao =0
while posicao < len(numeros):
numărul = numere[posi ț ia]
dacă numărul %2==0:
printează(numero)
posicao+=1

60
Rezolvarea exerciț iilor

3. Fă un program care să iniț ializeze o listă goală, solicitând utilizatorului 10 numere impare.
diferite, câte unul pe rând. Dacă numărul introdus este par, cereț i din nou un număr, până
ca valoarea să fie un număr impar. După aceea, afiș aț i cele 10 numere introduse.

numeros = []
numero =0
quantidade_sobrando =10
în timp ce quantidade_sobrando > 0:
numero =0
whilenumero %2==0:
numărul = int( input("Introduce ț i un număr impar: ") )

[Link](numero)
-=1

posicao =0

whileposicao < len(numeros):


print(numeros[posiț ia])
pozi ț ia +=1

4. Faceț i un program care să afiș eze un meniu pentru ca utilizatorul să selecteze una dintre cele trei opț iuni:

1 - Salutm lumea
Eu programez în Python
3 - Laț uri de repetare

Programul trebuie să solicite utilizatorului una dintre cele 3 opț iuni, în cazul în care utilizatorul introduce o valoare.

diferente de opț iunile (1, 2 sau 3), programul trebuie să prezinte din nou meniul de
opț iuni până când una dintre ele este aleasă. În cele din urmă, programul trebuie să afiș eze un mesaj
diferente pentru fiecare opț iune.

opcao =0
opcoes = [1,2,3]
în timp ce opcaonot în op ț iuni:

Selectaț i una dintre opț iunile de mai jos:


1 - Bună lume
2 - Eu program înc un Python
3 - Laț uri de repetare
op ț iunea = int ( input ("Selecta ț i op ț iunea: ") )

dacăop ț iunea == 1:

print("Salut lume!")
elifopcao == 2:
Deja sunt la lecț ia mea a ș asea de Python!
altfel:
În această lecț ie studiez bucla de repetare While

61
Rezolvarea exerciț iilor

5. Îndepărtaț i instrucț iuneapauzăeste instrucț iuneacontinuădo laço de repetare de mai jos:

numeros = [1,2,3,4,5,6,7,8,9,10]
posicao =0
whileposicao < len(numeros):
pozi ț ia +=1
dacă pozi ț ia == 3:
continuare
elifposicao == 6:
pauză
print(numeros[positia-1])

numeros = [1,2,3,4,5,6,7,8,9,10]
posicao =0
în timp ce pozi ț ia <5:

dacă pozi ț ia !=2:


print(numeros[posicao])
pozi ț ia +=1

Capitolul 8 - Folosiț i Dicț ionare!


1. Fă un program care să creeze un dicț ionar pentru a defini un produs, conț inându-i
descrierea ș i preț ul său.

produs
Apă
"preço":2.00
}

2. Fă un program care să iniț ializeze o listă de cumpărături cu 5 articole diferite, unde fiecare
item este un dicț ionar care conț ine descrierea ș i preț ul produsului. După aceea, parcurge lista
exibă informaț iile fiecărui articol.

lista_de_cumpărături
Apă
Lapte
Carne
Pizza
Ciocolată
]

foritem_comprainlista_compras
print("Produs:", item_compra["descriere"], "pentru", str(item_compra["preț "]), "rea
este.)

62
Rezolvarea exerciț iilor

3. Utiliza lista de cumpărături din programul anterior pentru a identifica care este cel mai ieftin produs
Care este cel mai scump produs din lista de cumpărături.

mais_barato =None
mais_caro =None
indice =0
whileindice < len(lista_compras):
lista_compras[indice]
dacă indicele == 0:

articol_achizitie
cel_mai_ieftin
altele:
ifitem_compra["pre ț "] > mai_scump["pre ț ":
cel_mai_scump

ifitem_compra["pre ț "] < mai_ieftin["pre ț "]:


cel_mai_ieftin

indice = indice +1

print("Produsul cel mai scump: ", mai_scump["descriere"],"pentru", mai_scump["preț "],"lei")


)
print("Produsul cel mai ieftin: ", mai_ieftin["descriere"], "pentru", mai_ieftin["preț "])
reais

4. Fă un program care să aibă o listă cu 5 persoane, unde fiecare persoană are propriul său
nume ș i prenume stocate într-un dicț ionar, după aceea, afiș aț i toate numele ș i
nume de familie. Pentru a complica puț in lucrurile, să simulăm că aceste date au fost
obț inute de pe web ș i cu asta am primit câteva inconsistenț e. Două din cele cinci persoane
posedăm dicț ionarul unde cheile sunt în literă mare ș i celelalte trei în literă mică.

pessoas = [
Joãozinho
Mariazinha
Gabriel
Joana
Everton
]

pentru persoana în oameni

[Link]("nome", None)
[Link]("sobrenome", None)
dacă nu numele:
[Link]("NOME", None)
dacă nu este numele de familie

persoană.get("SOBRENUME", None)

print(nume, prenume)

63
Rezolvarea exerciț iilor

Capitolul 9 - Modularizarea codului cu


Funcț ii!
1. Fă un program care să scrie "Prima mea funcț ie", această scriere trebuie să fie realizată
începând cu apelul unei funcț ii.

defminha_funcao():
Prima mea funcț ie

funcț ia_mea()

2. Fă un program care să solicite numele utilizatorului ș i vârsta utilizatorului, după asta


exiba mesajul:"{nome} are {idade} ani.". Acest mesaj trebuie să fie scris în
o funcț ie.

defescrever_nome_idade(nome, idade):
print(nome,"are",idade,"ani.")

numele_tău = str(input("Introdu numele tău: "))


introduce ț i-vă vârsta:

scrie_nume_varsta(nume_introdus, varsta_introdusă)

3. Faceti un program care solicită două numere utilizatorului ș i afiș ează înmulț irea acestora. A
multiplicarea trebuie să fie calculată într-o funcț ie.

def multiplicar(numărul1, numărul2):


returnnumero1 * numero2

numarul = int(input("Introduce ț i primul număr: "))


numarul2 = int(input("Introduceti al doilea numar: "))
rezultatul = înmul ț i(numero, numero2)
printaț i(resultado)

4. Realizează un program care să ceară utilizatorului trei numere diferite ș i să afiș eze dublul acestora.
cel mai mare număr. Pentru a face acest lucru, separaț i codul în două funcț ii diferite: O funcț ie
pentru a returna cel mai mare dintre cele trei numere ș i o altă funcț ie pentru a dubla numărul.

64
Rezolvarea exerciț iilor

defobter_maior(numar, numar2, numar3):


maior =None
dacă numărul > numărul2 ș i numărul > numărul3:
număr
elif numero2 > numeroandnumero2 > numero3:
numărul2
altfel:
numărul3
returnmaior

defdobrar(numărul):
returnnumero *2

Introduceti primul numar:


numero2 = int(input("Introduce ț i al doilea număr: "))
Introduceti al treilea număr:

maior = obtine_maior(numar,numar2,numar3)
print(dobrar(maior))

5. Faceț i un program care să iniț ializeze o listă goală, după care solicitaț i 5 nume diferite
la utilizator (folosiț i un ciclu de repetiț ie). Fiecare nume introdus trebuie adăugat în listă ș i pentru
fim, toate numele trebuie scrise în consolă. Foloseș te o funcț ie pentru a solicita ș i
returnează numele introdus, o funcț ie pentru a adăuga numele în listă (trecând numele ș i
lista prin parametru) ș i o altă funcț ie pentru a scrie toate numele în consolă.

defsolicitar_nome():
returnstr ( input("Introduceti un nume: ") )

defadicionar_nume_in_lista(lista, nume):
[Link](nume)

defini_nume(lista):
fornomeinlista
print(nume)

nomes = []
pentrucontadorinrange(0,5):
solicita_nume()
adaugă_nume_in_lista(nume, nume)

scrie_nume(nume)

Capitolul 10 - Funcț ii Lambda

65
Rezolvarea exerciț iilor

1. Fă un program care să scrie "Funcț ia mea prima", această scriere trebuie să fie realizată
începând cu apelul unei funcț ii care a fost declarată ca o expresie lambda.

func ț ia_mea =lambda:print("Func ț ia mea prima")


functia_mea()

2. Fă un program care să solicite numele utilizatorului ș i vârsta utilizatorului, după aceea


{nume} are {vârstă} ani.
o funcț ie lambda.

escrever_nome_idade = lambda nume, varsta: print(nume, "are", varsta, "ani.")


introduce ț i numele dvs.:
Modulo de introducere a vârstei: int(input("Introduce- ț i vârsta: "))

scrie_nume_varsta(nume_introdus, varsta_introdusa)

3. Fă un program care solicită două numere utilizatorului ș i afiș ează înmulț irea lor.
înmulț irea trebuie calculată într-o funcț ie lambda.

=lambdanumero1, numero2: numero1 * numero2

Introduceti primul numar:


numarul2 = int(input("Introduce ț i al doilea număr: "))
rezultatul = a înmul ț i (număr, număr2)
printaț i(resultado)

4. Fă un program care să ceară utilizatorului cinci numere, după care să afiș eze doar pe acestea
numere mai mari decât 10. Utilizează funcț iafiltrupentru a face asta.

numeros = []
pentru indice în intervalul (1,5):

număr = int(input("Introduce ț i un număr: "))


[Link](numero)

maiores = filtru(lambdanumero: numărul >10, numere)


formaiorinmaiores
print(maior)

5. Fă un program care să solicite zece numere de la utilizator, după aceea, să afiș eze toate.
numere pare ș i abia apoi afiș aț i toate numerele impare. Utilizaț i funcț iafiltrupara
face asta.

66
Rezolvarea exerciț iilor

definire_array(array):
pentru valoroase în array

print(valor)

numeros = []
pentru indice în interval (1,10):

număr = int(input("Introduceti un număr: "))


[Link](numero)

pares = filtrează(lambdanumero: numero % 2 == 0, numeros)


impare = filtrează(lambdănumăr: număr %2==1, numere)
scrie_array(pare)
scrie_array(impare)

67

S-ar putea să vă placă și