Sunteți pe pagina 1din 30

PYTHON – CURS 2

Structuri Repetitive
String
Fișiere
Liste
EXECUTAREA PROGRAMELOR
Compilare: C/C++ (compilator
traduce in limbaj de asamblare),
controlul resurselor, rapiditate.
Interpretare: Python, Javascript
(interpretar, interpreteaza
runtime) portabilitate, lent.
Compilare+interpretare: Java
(portabilitate + securitate),
compilator+masina virtuala.
INSTRUCTIUNEA WHILE
while expresie_logica:
secventa
[else:
secventa]

Secvența poate avea una sau mai multe instrucțiuni. Acestea trebuie
scrise indendat cu același număr de spații. Secvența se va executa
cât timp condiția este adevărată.

În situația în care există else secventa din else se va executa în cazul


în care condiția devine falsă.
Instrucțiunea break poate fi utilizată în while pentru a forța ieșirea
din while. Dacă există clauza else aceasta nu se va mai executa.
Instrucțiunea continue poate fi folosită pentru a sări executarea unui
pas al repetiției.
EXEMPLU WHILE
n = int (input("citeste n")) s = 0
s=0 bol = True
while n: while bol:
s+=n%10 n = int(input("citeste n"))
n=n//10 if n == 0:
print('Suma cifrelor este:',s) bol = False
else:
s+=n
print ('Suma numerelor este:',s)
WHILE & BREAK
n = int (input("citeste n"))
s=0
while n:
if n%10==1:
break
else:
s+=n%10
n=n//10
print('Suma cifrelor este:',s)
WHILE & CONTINUE

n = int (input("citeste n"))


s=0
while n!=0:
if n%10==1:
n=n//10
continue
s=s+n%10
n=n//10
print('Suma cifrelor este:',s)
EXERCITII WHILE
1. Fie n un număr întreg să se afișeze numărul de
cifre egale cu zero ale lui n.
2. Fie n un număr întreg să se afișeze oglinditul său.
Verificați dacă n este palindrom.
3. Fie n un număr întreg să se afișeze divizorii săi.
4. Fie n un număr întreg să se verifice dacă este prim.
5. Fie a și b două numere întregi să se afișeze
cmmdc(a,b).
6. Fie n numărul de elevi dintr-o clasă. Pentru fiecare
se cunoaște media semestrială. Calculați media
clasei luând în calcul doar elevii promovați
(media>=5).
INSTRUCTIUNEA FOR
• for contor in range (valoare):
for var_contor in secventa_valori: secventa
instuctiuni
• for contor in range (v_ini, v_final, pas):
[else: secventa
instuctiuni]
Blocul de instructiuni poate avea una sau mai multe instrucțiuni.
Acestea trebuie scrise indendat cu același număr de spații.
Blocul de instrucțiuni se va executa pentru fiecare element al
secvenței de valori.
În situația în care există clauza else secventa din else se va executa
în cazul în care nu mai există valori în secvența de valori.
- break poate fi utilizată în for pentru a forța ieșirea din repetitie.
Dacă există clauza else aceasta nu se va mai executa.
- continue realizeaza saltul la urmatoarea valoare a contorului.
OBSERVATII FOR
#dacă setul generat de funcția range () este gol, nu se executa nimic
for i in range (1,1):
print(i*i)

#valorile din range trebuie puse în ordine crescatoare


for i in range (5,1):
print(i*i)

#putem avea ordinea inversă


for i in range (9,1, -2):
print(i*i)
FOR - VARIANTE
s=0 s=0
for i in range (n): for i in range (1,6):
x=int(input(“Dati x=int(input("Dati
x”)) x"+str(i)))
s+=x s+=x

- i primeste valori intre - i primeste valori intre


0 si n-1 1 si 5
FOR – APLICATII
1. Fie o secvență de n numere reale să se afișeze elementul maxim din
secvență.
2. Se citește o secvență de n numere întregi. Să se afișeze câte din
numere sunt egale cu poziția lor în secvență.
3. Se citește o secvență de n numere întregi să se afișeze numerele de
3 cifre de forma abc cu proprietatea a<b<c.
4. Fie o secvență de n numere întregi și un număr întreg x. Să se
verifice dacă x apare în secvență. În caz afirmativ să se afișeze
poziția sa în cadrul secvenței.
5. Sirul lui Fibonacci este secvența de numere întregi: 0, 1, 1, 2, 3, 5,
8, 13... (x0=0, x1=1, xn=xn-1 + xn-2). Cerințe:
 Se citește n, număr natural, să se calculeze al n-lea termen al
șirului.
 Se citește un numar întreg x. Să se verifice dacă este un termen al
șirului lui Fibonacci.
OPERATII CU SIRURI DE CARACTERE
 Citirea unui șir de caractere se face cu funcția input().
 Atribuirea: variabila = ”valoare sir de caractere”
 Afișarea șirului de poate face cu funcția print(sir).
Ex:
 print( '"Isn\'t," they said.‘)
 print(‘Linia 1.\nLinia 2.‘)
 print('C:\Director1\nfisier')
 Operatori: +(concatenare),*(duplicare), in, not in (membru), [ ]
(acces).
 Funcții și metode: lungimea șirului (len()), căutare (find()),
transformari litere mari/mici (upper(), lower()), delimintarea
cuvintelor (split()), diferite verificări pe șiruri (isnumber(), isalpha(),
istitle(), isdigit(), islower() etc.), numararea aparitiilor unui subșir
(count()) etc. https://docs.python.org/3/library/stdtypes.html#string-
methods .
FORMATAREA AFISARII
 # fara argumente
 print("Hello {}, your balance is {}.".format("Adam", 230.2346))

 # mentionarea pozitie
 print("Hello {0}, your balance is {1}.".format("Adam",
230.2346))

 # cu identificatori
 print("Hello {name}, your balance is
{blc}.".format(name="Adam", blc=230.2346))

 # pozitie si identificatori
 print("Hello {0}, your balance is {blc}.".format("Adam",
blc=230.2346))

 z=complex(4.12333,5.55563)
 print("z={0:4.2f}+{1:4.2f}j".format(z.real,z.imag))
EXERCITII
 Se citeste un sir de caractere care reprezinta CNP-ul unei
persoane Să se verifice corectitudinea lui: numărul de
caractere să fie 13 și toate caracterele să fie cifre.
 Fie un sir de caractere ce descrie un obiect. Să se verifice daca
toate caracterele sunt litere.
 Fie un sir de caractere alfanumerice. Să se afișeze suma
cifrelor întâlnite în șirul de caractere.
 Fie un șir de caractere ce reprezintă parola unui cont. Să se
verifice daca este o parolă puternică. O parolă este considerată
puternică dacă: are exact 8 caractere, conține cel puțin o literă
mare, cel puțin o cifră și cel puțin unul dintre caracterele #, $,
%, &, @.
INCHIDEREA FISIERELOR
 Închiderea fișierului permite eliberarea memoriei de resursele
utilizate de acesta.
Pentru a închide un fișier se folosește metoda close() astfel:
nume_variabila_fisier.close().

Exemplu:
f = open("fisier.txt", "r")
Pentru a închide fișierul se va folosi: f.close()
 Dacă fișierul a fost deschis folosind cuvântul cheie with atunci
acesta se închide automat.
 Putem testa inchiderea fisierului:
 print(f.closed)
CITIREA DIN FISIER
 Citirea datelor din fișier se face prin metoda read(), care
returnează șirul de caractere din fisier. Se poate citi în
întregime fișierul: nume_var_fisier.read().
 Se poate citi un număr de caractere din fișier:
nume_var_fisier.read(valoare), valoare prezintă numărul de
caractere care se vor citi din fișier.
 Se poate citi câte o linie din fișier: fie cu metoda readline()
(nume_var_fisier.readline()), fie prin parcurgerea tuturor
liniilor cu o instrucțiune repetitivă astfel:
for linie in nume_var_fisier:
..................
 Elementele unui fișier pot fi puse într-o listă: lista=
nume_var_fisier.read().splitlines(), metoda splitlines() pune
fiecare l linie ca element al listei și elimină sfarsitul de linie.
EXEMPLE - CITIRE
f = open("date.in", "r")
print(f.read())

f = open("date.in", "r")
print(f.read(5))

f = open("date.in", "r")
for line in f:
print(line)

f = open("date.in", "r")
for line in f:
print(line.rstrip('\n'))
SCRIEREA IN FISIER
 Scrierea datelor într-un fișier se face prin metoda write(), care
returnează numărul de caractere scrise: nume_var_fisier.write().
 Editarea unui fișier existent: deschiderea în modul a va permite
adăugarea la sfârșitul fișierului
f = open("fisier.txt", "a")
f.write("Adauga la final!")

 Deschiderea în modul w va permite rescrierea fișierului.


f = open("fisier.txt", "w")
f.write("Continutul fișierului se va rescrie!")

 Crearea unui fișier: se va deschide fișierul în modul x sau în


modul w (dacă exită se va rescrie, dacă nu există se va crea).
EXEMPLE - SCRIERE

ag = open("agenda.in", "w")
nume = 'James'
ag.write(nume+'\n')
ag.close()
ag = open ("agenda.in", "a")
ag.write("Phillip"+'\n')
ag.close()
APLICATII
 Fie un fișier numere.in ce conține numere întregi. Creați un
fișier pare.out ce conține numere pare din fișierul numere.in
și un fișier impare.out ce conține numere impare din
numere.in.
 Creați un fișier cu primele n pătrate perfecte. Unde n este un
număr întreg citit de la tastatură.
 Creați un fișier cu primele n elemente ale șirului lui
Fibonacci. Unde n este un număr întreg citit de la tastatură.
 Fie date.in un fișier ce conține pe primul rând un număr
întreg n și pe următoarele n linii numere întregi. Creați un
fișier prime. out cu numere prime din fișierul date.in.
LISTE - LIST
Exemple:
 culori = ["rosu", "verde", "albastru", "galben", "alb", "violet"]

 proprietati_figura = ["patrat", "rosu", 2, 4]

 lista= [] - lista vida

Elementele listei se scriu între paranteze pătrate. Acestea pot fi accesate si


modificate.
Operatori: + (concatenare liste), *(duplică elemente), in (membru).
Operații:
- crearea listei : lista vidă / listă cu elemente
- adaugarea unui element
- eliminarea unui element
- afișarea elementelor listei
Funcții: len(lista), min(lista), max(lista), list(sir-caractere) etc.
Metode: lista.append(), lista.insert(index, obj), lista.remove(obj),
lista.sort(), lista.pop(index), lista.clear() etc..
https://docs.python.org/3/tutorial/datastructures.html
ACCESAREA ELEMENTELOR LISTEI

 nume_lista[index]
 nume_lista[0] - primul element,
 nume_lista[i] - elementul cu indexul i
 nume_lista[i:j] - elementele din intervalul [i,j)
 nume_lista[i:] - toate elementele listei începând
cu indexul i
#Operatori list
l1=[1,2,3]
l2=[4,5,6]

l3 = l1+l2
print(l3)

l4=l1*2+l2
print(l4)

if 4 in l4:
print('DA')
else:
print('NU')
ADAUGARE / INSERARE ELEMENTE IN LISTA

Adaugare la sfarsit: numelista.append(element)


Exemplu: crearea unei liste cu patrate perfecte
l = []
n = int(input("n="))
for i in range (1,n+1):
l.append(i*i)
print(l)
 Inserarea element: numelista.insert(pozitie,
element)
ELIMINARE ELEMENTE DIN LISTA

Pentru a elimina elementul de pe ultima poziție din


lista Patrate_perfecte se pot folosi variantele:
patrate_perfecte.pop()
patrate_perfecte.pop(5)
patrate_perfecte.remove(49)
EXEMPLE
#lista cu patrate perfecte
l = []
n = int(input("n="))
for i in range (1,n+1):
l.append(i*i)
print(l)

l.insert(2,10)
print(l)

l.pop(2)
print(l)

l.remove(9)
print(l)

print(max(l), min(l), len(l))


l.clear()
print(l)
APLICATII
1. Se citesc n, e, p, k – numere întregi şi apoi n
numere naturale. Se cere să se execute
următoarele transformări pe lista creată cu cele n
numere naturale:
 Să se elimine prima apariţie a elementului e în listă.
 Să se adauge elementul e pe poziţia p în listă.
 Să se elimine elementul k din listă, dacă acesta este găsit,
altfel se va afișa un mesaj corespunzător.
2. Fie o lista de cuvinte - list, si o litera - c. Afisați toate
cuvintele din lista care încep cu caracterul c.
3. Fie n număr natural mai mic decat 100. Creați o lista
cu primele n pătrate perfecte. Citiți un număr întreg
k mai mic decât 100 și afișați elementul listei de pe
poziția k.

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