Curs de Python
Curs de Python
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
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.
Linkedin
Github
Blog personal
3
Introducere
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
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.
5
Ar trebui să înveț i Python
Î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.
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.
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
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.
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?
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).
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
valor =42
rezultat = valoare + 10
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.
Atenț ie
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.
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.
9
Începând cu Python
Puteț i utiliza oricare dintre ele ș i programul dumneavoastră va înț elege că este vorba despre o
ș ir.
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:
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.
10
Începând cu Python
soare_dimineaț a =Adevărat
chuva_pela_tarde =False
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.
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
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
11
Începând cu Python
Vezi în cod:
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
Unde (sau)
Î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
Operator Descriere
>= (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
Hai să practicăm
1. Fă un algoritm care solicită un număr utilizatorului
13
Începând cu Python
Atenț ie
14
Desvii condiț ionale, făcând programul tău să ia decizii
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:
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ă.
leite_em_estoque =True
ifleite_em_estoque
Am cumpărat lapte
altfel:
Am cumpărat apă
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.
nota =5
Î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
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:
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:
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
deu_sol =True
dacă nu notdeu_sol:
A plouat
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.
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.
Copil de la 0 la 11 ani;
Adolescente cu vârste între 12 ș i 18 ani;
Atenț ie
19
Valori None, ș iruri ș i liste
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)
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
20
Valori None, Stringuri ș i Liste
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.
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
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.
Salut {0}
Olá Gabriel
Viu doar? Primul parametru a intrat în locul de"{0}", al doilea în loc de{1}e
aș a mai departe!
Aș a cum poate fi văzut în cod, toate apariț iile acestei formate sunt înlocuite
pe parametrul!
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
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-
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.
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).
Î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
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).
24
Listas
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
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!
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.
25
Listă
print(lista_de_compras[-1])
print(lista_de_comenzi[-2])
print(lista_de_compară[-3])
print(lista_de_comparare[-4])
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
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
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.
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?
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.
lista_de_cumpărături
Simples aș a.
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.
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.
Atenț ie
28
Listă
29
Laț uri de Repetiț ie - I
În capitolul anterior a fost explicat modul de funcț ionare al listelor, aș a că vom continua să folosim
listează aici.
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]
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!
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ă.
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
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.
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
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!
print(valor)
În acest caz, lista rezultată este: [0, 2, 4, 6, 8], foarte fain, nu-i aș a?
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.
3. Face ț i un program care să afi ș eze toate valorile impar între 50 ș i 100 utilizând
gamă.
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
32
Lecț ii de Repetiț ie - II
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?
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
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.
34
Lacuri de Repetiț ie - II
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])
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
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.
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.
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
37
Dicț ionare
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:
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.
cheile
forchaveinchaves
print(chave)
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"])
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.
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
Atenț ie
41
Modularizarea codului cu 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!
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.
Pentru aceasta, avem nevoie ca aceste piese să fie reutilizabile, la fel ca piesele de lego.
42
Modularizarea codului cu funcț ii
Î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.
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
Pentru a executa o funcț ie, trebuie să foloseș ti numele ei urmat de paranteze, vezi:
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
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.
defelevar_ao_quadrado(numar):
print(numero * număr)
45
Modularizarea codului cu funcț ii
elevare_la_patrat(9)
elevat_la_patrat(9)
elevar_la_pătrat(4+5)
nouă
elevare_la_patrat(noua)
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.
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.
defsoma(numărul1, numărul2):
returnează numărul1 + numărul2
suma(1,2)
print(resultado)# -> 3
rezultatul = suma(2,2) * 3
print(resultado)# -> 12
print(soma(3,7))# -> 10
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
rezultat
altfel:
rezultatul = valoarea +5
returnează rezultatul
Î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
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.
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
49
Expressii 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:
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
defobter_valor()
returnează3+2
Observă că unul dintre punctele forte ale expresiilor lambda este sintetizarea lor, acestea fiind o formă
Î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!
51
Expresii Lambda
numeros = [0,2,3,4,5,7]
pares = []
pentru număr din numere
dacă numărul %2==0:
[Link](numero)
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
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
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
55
Rezolvarea exerciț iilor
3. Faceț i un program care să ceară utilizatorului vârsta sa, apoi să afiș eze clasificarea.
etară în conformitate cu intervalele de valori:
56
Rezolvarea exerciț iilor
Copil
elifidate >60:
Vârstnic
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.
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
cidades = []
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:
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: "))
itens_compra = ["Arroz","Leite","Ovos","Feijão","Tomate"]
foriteminitens_compra
afiseaza(item)
dacă numărul % 2 == 0:
print(numero)
3. Fă un program care să afiș eze toate valorile impare între 50 ș i 100 folosind range.
print(numero)
59
Rezolvarea exerciț iilor
numeros = []
for numer in range(10):
item_digitado = int ( input("Introduceti o valoare: ") )
dacă(item_digitado %2==0):
item_digitado +=1
[Link](item_digitado)
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}")
itens_compra = ["Arroz","Leite","Ovos","Feijão","Tomate"]
posicao =0
în timp ce pozi ț ia < len(itens_compra):
print(itens_compra[posisia])
pozitie+=1
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
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:
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
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:
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
indice = indice +1
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
]
[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
defminha_funcao():
Prima mea funcț ie
funcț ia_mea()
defescrever_nome_idade(nome, idade):
print(nome,"are",idade,"ani.")
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.
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
defdobrar(numărul):
returnnumero *2
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)
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.
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.
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):
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):
67