A-Pgthon: Limbaje de Programare I
A-Pgthon: Limbaje de Programare I
1.I Introducere
fn acest laborator vom ?nvafty declararea Si manipularea operatiilor de
IntrareAesire Si a buclelor repetitive in cadrul limbajului Python.
De retinut: Tipul de date implicit prim care sunt reprezentate functiile
de I/0 ?n cadrul limbajului Python este tipul de date String.
In [4]: print(s)
The value Of x is 32.5, and y is 40ee. . .
In [10]: print("Hello " + name + " you are " + str{age) + " years old, and your
favourite float is: " + str(randoofloat))
Hello Sebastian you are 26 years old. and your favourite float is: 26.9
Tema 1
F:==:=Tfiecare din urmatoarele expresii indicati valoarea care se va
afisa in momentul ?n care expresia va fi evaluata. Dac5 evaluarea ar
duce la o eroare scrieti cuvantul "eroare" in caseta corespunzatoare
expresiei; daca nu se imprima nimic scrieti cuvantul "gol". Va
F
8 if 6 > 7:
9 print("Yep'' )
Jog
8if 6 > 7:
9 print(''YEP")
1S else :
11 print("Nope")
tic,pfl,
8 van = .Panda'
9 if var == "pancla":
1© print("CutE! ")
11 elif var == I.Panda":
12 print("Regai! ")
i3 else:
i4 print(''ugly... '')
qeJo-4 l
8 teREp = 42
9 if temp > 29:
18 print("Hot"}
il elif temp > 37:
12 print{"REALLY HOT! ")
13 elif temp > 2®:
14 print( 'R[omfortabie'' }
15 else:
16 print{"Cc}ld")
+/4+
8 temp = 1®
9 if temp > 29:
1® print("Hot")
11 elif temp > 37:
12 print("REALLY HOT! ")
13 elif temp > 2®:
14 print("Cofl¥fortable" )
•i5 else :
•i6 print{"Cold")
c7„
P,
pgthon Limbaje de programare I
1.4 Bucle -buclele permit executarea unor declaratii sau a unor grupuri de declaratii de mai multe
ori ?n functie de parametrii pe care ?i atribuim ?n cadrul buclei. fn general, declaratiile sunt executate
secvential: prima declaratie dintrro functie este executata prima, urmata de a doua Si tot asa.
• Bucla while -se execut5 atat timp cat conditia indicata este respectata. Este similara unei
declaratii de tip „ip', insa bucla „while" se va opri in momentul in care conditia enuntata nu
va mai fi ?ndeplinita.
Ex:
8 impor't random ,.v. t.i-=`ti-_` +`^-``rty.-`= >`L,,`r```, ` _,:`-` :. `r7> `,I
9 SecretNumber = random.randint(1,1®1) r :.c\t `-``!``t~t '..: ,y: ,`TLt>`t7F .-j.'r:::`,;` `~`.,i;'``.rTL .i`)`T.` 1@ nurfeuEsses = 1
llguess = int(input("Enter a guess number: '"
12iwhile (guess != secretNumber) :
13 if guess > secretNumber:
14 print ('The number is less than " + str(guess))
15 else:
16 print {"The number i5 greater than " + str(guess))
17 num6uesses += 1
i8 guess = int(input('6Enter a gLie5s number: "))
19 print('tRight! The number is " + str{secretNumber))
29print(''You get it in " + str(num6uesses} + " guesses. '8)
in urma introducerii succesive a unui numar ales de utilizator in intervalul 1 -101 ?n cadrul
interpreter-ul Ipython se va executa bucla while atat timp cat conditia guess != secret number nu este
?ndeplinita.
Ex:
In [10] : run file( 'C:/Users/Danut/Docun&Ent5/JocGuessi*1hile. py ' ,
wdir= ' I : 7'User5/Danut/DocunBents ' )
Nota: Ca Si ?n cazul altor structuri de control existente ?n cadrul limbajului Python doua
puncte (:) are o semnificatie speciala in cadrul mediului de programare interactiv. De ?ndata ce s-a
introdus corect prima linie a blocului de instructiuni pentru bucla while liniile care urmeaza sunt
automat indentate. Pentru a termina toate blocurile de instructiuni se introduce o linie suplimentara
goala.
• Bucla for - itereaza o secventa data de un anumit numar de ori. La fiecare trecere
prin bucla variabila declarata ia o valoare. La prima trecere variabila porneste de la cea mai
mica valoare. Apoi variabila devine valoarea precedenta +I etc.
8 imaport math
9 n = int(input("Int,reduceti un numar: "))
ls for a in rangE'(1,n+1):
11 for b in range(a,n):
12 13 14 15 int(n8ath.sqrt(c_Square)
c_square = a**2 + bS$2 c ) if {(c_square -c**2) ==
= S): print(a, b, c)
in
urma rularii liniilor de cod de mai sus in cadrul editorului de cod al mediului de dezvoltare Spyder,
interpreter-ul Ipython ne va returna la iesirea standard valorile pentru a, b Si c in momentul in care
utilizatorul a atribuit o valoare variabilei n ?n cadrul intrarii standard:
In [10]: runfile('C:/Users/Danut/Documents/ForlnRange.py', wdir='C:/Users/Danut/Documents')
Introduceti un numar: 18
345
5 12 13
681®
8 15 17
9 12 15
12 16 2@
Nota: Functia range ( ) retumeaza un flux de numere ?ntr-un interval specificat. Sintaxa functiei
range ( ) este similara cu cea responsabila de extragerea unui subsir dintr-un string: range (start, stop,
step). in cazul in care se omite declararea parametrului start, functia range ( ) va ?ncepe de la valoarea
implicita 0. Parametrul step are valoarea implicita 1, declararea acestuia fiind op!ionala. Iteratia se
repeta pana in momentul in care se va atinge valoarea stop - I.
in exemplul urmator se cere sa se gaseasca factorialul unui numar pe baza numarului introdus de
la tastatura de utilizator. Folosind instructiunile conditionale if Si elif Si o bucla repetitiva for ( ) se va
verifica dac5 numarul introdus este negativ, pozitiv sau egal cu zero. Ex:
12 if nun < a:
13 print ("Imi pare rau, nu exi5ta factorialul unui numar negativ") 14 elif nun == ®:
15 print("Fac{orialul iui © este 1")
16 else :
17 for i in range (1, nun+1):
i8 factorial = factorial * i
19 print("Factorialul 1ui",nun, "E.ste", factorial)
in urma rularii liniilor de cod de mai sus interpreter-ul Ipython ne va returna la iesirea standard
valorile pentru factorialul numarului introdus de utilizator daca numarul este pozitiv Si strict diferit de
0:
F
ptlthon Limbaje de programare I
In [11] : runfile{.I:/Users/Danut/Documents/numarpri!nrfar break.py.,
ndir= ' I : /User's/Danut/Documents ` )
Enter a number: 5
Factorialul lui 5 este 12®
in exemplul urmator se va verifica daca un numar introdus de utilizator este num5r prim folosind
bucla repetitiva for ( ) Si instructiunea break, utilizata pentru a iesi din bucla dupa ce s-a indeplinit
conditia declarata in cadrul instructiunii if.
Ex:
8 # \tL<tfiT=rL1££ i)r+`!r;€ 5inj,`"{t ,Jrti`t; +I\T-ti.rt je[£t 1
21 else:
22 print{num,..nu Este un numar prinr}
in urma rularii liniilor de cod de mai sus intexpreter-ul Ipython ne va retuma la iesirea standard:
In [11] : run file( 'C: /Users/Danut/Documents/Verfi[areNumearprirm. py' ,
wdir= ' I : /Users/Danut/Docu¥fbents ' )
Intreduceti un numar: 18
18 nu este un numar prim
2 ori 9 Este 18
Sau:
In [12] : run file(.I : /Users/Danut/Documents/VerficareNumarprim. py ' ,
wdir= ' C : /Users/Danut/Documents ' )
Intrcrduceti un numar: 23
23 este un numar prim
1.4.1 Metoda ghiceste si verifica -se bazeaz5 pe tehnica algoritmica de enumerare exhaustiv5.
Pe baza acestei tehnici se enumera toate posibilitatile pana cand se ajunge la rdspunsul corect sau pana
in momentul in care se epuizeaz5 intreg spatiul de posibilitati.
#
pgthon Limbaje de programare I
in urma rularii liniilor de cod de mai sus interpreter-ul lpython ne va retuma la iesirea standard:
In [13] : run file( 'C :/Users/Danut/Documents/Radacina[ubicawhile.py' ,
wdir..= . I : /Users/Danut/Docuflsents ' )
Introduceti un intreg: 27
Radac.ina cubica a lui 27 estE 3
• ComDletare cu numere negative -tehnica utilizata pentru a gasi radacina cubica?n cazul
numerelor negative
Ex:
Sx = int{input{'IntroducEti un intreg: t))
9 for ans in range(®. ab5(x) + 1):
1® if ans**3 ± abs(x):
11 break
12if an5 ** 3 != abs{x):
13 print(str(x}, `nu este un cub perfect!')
14 else :
15 if x < a:
16 an5 = - ari5
17 print('Radacina cubica a iui ` + str(x) + . este ' + str (ans))
in urma rularii liniilor de cod de mai sus interpreter-ul Ipython ne va retuma la iesirea standard:In
[14J,
run file ( ' C : /Users/Danut/Docu!ltents/RadacinacubicaNegativaFor . py ' ,
ndir= ' I : /Users/Danut/Oocuirbents ' )
Tema 2
Consideram doua variabile, varA Si varB catora le sunt atribuite valori fie de tip numeric fie de
tip Sir de caractere (string). S5 se scrie o bucata de cod prin care sa se evalueze varA Si varB §i
folosind functia print ( ) s5 se retumeze urmatoarele mesaje:
• "retumeaz5 un Sir de caractere" daca varA Si varB sunt variabile de tip string • " mai
mare" daca varA este mai mare decat varB
• "egal" dacavarA este egalcuvarB
• "mai mic" dacavarAeste mai mic decat varB
i :. _r,4,
E,
puthon Limbaje de programare I
Nota: La scrierea programului nu se va folosi functia input ( ) pentru a cere utilizatorului sa
atribuie.-valori variabilelor. Codul se va scrie presupunand ca se cunosc ?n prealabil valorile
variabilelor.
Tema 3
==i=rurmatoarele secvente de cod scrise in limbajul Python. Pentru fiecare secventa
raspundeti la intrebarea asociata.
Ex:
8 rium = 5
9 if num > 2:
1& print(nun)
11 nun -= 1
12 print(nun)
5,4
C nun = a
9 while hum <= 5:
1® print(nun)
11 nun += 1
12
`13 print("Outside of loop'.)
14 print(nun)
'oDY Cnftwit
8 nun = 1®
9while nun > 3:
1® nun -= 1
11 print(nun)
12
#
pgthon Limbaje de programare I
3> ]8 , 7 i 6 I 5`, C7 I 3
8 nun = |C
9 while True:
1& if nun < 7:
11 print(.Breaking out of loop`)
12 break
13 print(nun)
14 nun -= 1
15 print('Outside of loop.)
Tema 4
Scrieti un program ?n cadrul editorului de cod Spyder care sa utilizeze o bucla while pentru a afisa
la iesirea standard folosind functia print ( ) urmatoarele:
In [15] : run file( 'C :/Users/Danut/Do[umsent5/Exercitiuwhile.py' ,
wdir= ' C : /Users/Danut/becumetits ' )
2
4
6
8
1®
GcodbyE!
PFi'nT C yiuVA)
nuiun 17 pj"i C
2q GocJbyJ 41
Tema 5
Scrieti un program in cadrul editorului de cod Spyder care sa utilizeze o bucl5 for pentru a afi§a
la iesirea standard folosind functia print ( ) urmatoarele:
Hel 1o i
1®
8
6
4
2
pn,,i c i )