You are on page 1of 11

Ur/bun.

r':nNu @\// 4 / `L/

a- pgthon EH I, £ 1 - Limbaje de programare I


Laborator 4

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.

1.2 0Deratii I/0


• Functia Print ( ` -converteste expresiile introduse ?ntr-un Sir de
caractere (string)
Si le afiseaza la iesirea standard a interpreter-ului Iphyton.
Ex:
In [1]: x = 1® * 3.25

In [2]: y = 2ae * 288

In [3]: s = 'The value of x is I + str{x) + ., and y i5 I + strfy) + '.-.'

In [4]: print(s)
The value Of x is 32.5, and y is 40ee. . .

• Functia InDut (" ") -returneaza expresia introdusa de utilizator


de la tastatura odata ce a fost atribuita unei variabile.
Ex:
In [5]: inputstring = input('Enter a string: ')

Enter a string: Python is inteiresting

In [6]: print('The inputted string is:', inputstring)


The inputted string i5: Python is interesting

Pentru a putea lucra cu numere ^mainte de a apela functia input ( )


trebuie mai intai sa realizam conversia (cast) dintr-un anumit tip de
date intr-un Sir de caractere.
Ex:
In [7]: name = input("Enter your name: ")

Enter your name: Sebastian

In [8]: age = int(input('.Enter your age: "))

Enter your age: 26

In [9]: randomflaat = float(input("Enter a random float: ''))

Enter a random float: 26.9

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

pgthon Limbaje de programare I


incurajam sa completati in mod direct raspunsul la fiecare intrebare intrucat acesta va va ajuta s5 va
consolidati ?ntelegerea expresiilor de baza in Python.

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 ' )

Enter a guess number: 23


The number is greater than 23

Enter a guess numbEr: 78


The number is greater than 78

Enter a guess number: 99


The number is less than 99

Enter a guess numaber: 88


The number is greater than 88

Enter a guess numaber: 9®


Right! The number is 9®
You get it in 5 guesses.

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.

P, pgthon Limbaje de programare I


fn urmatorul program se va calcula teorema lui pitagora pentru un triunghi dreptunghic folosind
bucla~for ( ) Si functia sqrf ( ) pentru calculul radacinii patrate a unui num5r.

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:

9 nun = int(input("Enter a number: 'P}}


iSfactorial = i
11 ¥` ==I== 'r..C-|``t?i-.-: {: i-:-`iil.T(I(`J /:L`r'.rrL?:'`!.i :`. `'-..`-.` I f:.-.'1t-..{:3..TT:-:. ` i il.r.i_r~i' i.~i \ ' _``i.?L{ c~.iT.:`;i.. t=..< _~`..-. '`!`_i

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

9 nun = int(i'nput("Introduceti un numar: ")}


1® if nun > 1:
11 + ,;frt.fiTLiTDr j+if+,T`,1-i: tL``iT``i
12 for i in range(2,num`):
13 if (num%i} -=8|
14 print(nun, 'e nu estE un nuntar prim")
15 print{i,"ori'6,nun // i, "este",nun)
16 break
1? else:
18 print(nun, "este un numar prim")
19 # c3;LTrLT :lit;r`L?TL';+tt {,'if\.TLiT+L= =ii?f ;>;;Tt .ft;iit- *;=i-itT

2® rty~ :r{X.. _.j!`-.`` \=L` . ` . _. = >-`r-= .^T-\ {`iLi{iQi=.r +jr-:``:

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.

• Radacina cubica -o modalitate de folosi aceasta abordare pentru generarea de valori


posibile pentru a gasi radacina cubica a lui x este sa ?ncercam mai intai 0**3, apoi 1 **3, apoi
2**3, Si asa mai departe.
Ex:
8x = int(input(tlntroduce€i un intreg: '})
9 ans - 8
1Swhile ans**3 < x:
11 ans = ans + 1
12 if ans**3 != x:
13 print(str(x) + 'nu estE un cub perfect')
i4 else :
15 print('Radacina cubica a lui ' + str(x) + ' este . + str tans))

#
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 ' )

Intr`oduceti un intreg: -343


Radacina cubica a lui -343 este -7

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

1 :f;ygf^ :v;#c = >+a Dmd


nr4furncodD" fro`nT L h-mvi prticti )
u„ sf^ alf
co-Jrty o+( J-C )
-_--------:-:---:-_:-----*ir:----::-__

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)

Pentru fiecare program scrieti ?n caseta corespunzatoare ce ar trebui sa se afiseze la ie§irea


standard in momentul evaluarii expresiei separand ceea ce apare pe o linie noua printr-o virgula Si un
spatiu. Deci raspunsul pentru codul de mai sus va fi:

5,4

C nun = a
9 while hum <= 5:
1® print(nun)
11 nun += 1
12
`13 print("Outside of loop'.)
14 print(nun)

0,I,2,3,q,i , c,utsi-de TS ¢04f,,p6


8 numberofLcops = C
9 nun]berofApples = 2
1@while numberofLoops < 1©:
11 numberofApples S= 2
12 numberorfApples += numberofLoops
i5 numberofLoops -= 1
14 print(''fngumber of apples: " + 5tr(numbErofApples))

'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.)

/o)S,8,7 / if3t4ftk;N3 out o% /avp I ouls|;:A_off •..-z;-c7>


8 numa = 1©
9 while True:
1S if nun < 7:
11 print('Breaking out of loop')
12 break
13 print(num)
14 nun -= 1
15 print( 'Outside of loop' )

/o) 9/ i i ,7 if3rapK`;IL] trt{f 0% ¢of f p I OujsiJf O#/oiD


Nota: Operatorii de asignare in cadrul limbajului Python (+=, -=, *=, /=) au urmatoarele echivalente:
• a += besteechivalentcu:a=a+b
• a -= besteechivalentcu:a=a-b
• a *= besteechivalentcu:a=a*b
• a /= besteechivalentcu:a=a/b

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

GcodbyE!

P ptjthon Limbaje de programare I '';'h;i;-Mu.un Z:--/o /. nw-un -, 2

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:

In [16] : runfile{.I:/Users/Danut/.Docun¥,ents/Exercitiuwhile. py' , ndir= ' I :


/Users/Danut/Documents ' )

Hel 1o i

8
6
4
2

PrcwlT , | h F/LW¢ / " /_ '{DV ; im ro`NjA (/a,/)-2) `,

pn,,i c i )

You might also like