Python
Python
5. este un limbaj interpretat; 6. este un limbaj uor de nvat i de utilizat; 7. este un limbaj preferat n diverse comuniti tiintifice, academice i de cercetare; 8. este flexibil la numeroase paradigme de programare: programare imperativ, programare funcional, programare orientat pe obiecte; 9. este un limbaj complet dinamic i are management automat al memoriei (garbage collector); 10. blocurile sunt delimitate prin indentare; 11. este un limbaj case sensitive; 12. codul surs este scurt, uor de testat, de depanat i de ntreinut; 13. permite concentrarea efortului de dezvoltare pe problem i nu pe detaliile de implementare ale limbajului de programare; 14. codul surs este independent de platform; 15. indexarea ncepe de la 0.
Exemplul 6 Se poate defini un alt obiect string ntr-o variabil care conine un string. n acest mod se poate modifica irul. S se testeze urmtorul cod. Care poziie din string este modificat?
sir = "stringurile sunt imutabile" sir = sir[:1]+'X'+sir[1:] print sir
1.1.4 Liste
1. listele sunt mutabile 2. elementele listelor pot fi modificate 3. funcia built-in len(lista) ntoarce lungimea listei 4. listele pornesc de la indicele 0 5. elementele au indicii de la 0 la len(lista)-1 6. lista[0:len(lista)] conine lista cu elemente de la 0 la len(lista)-1 Exemplul 9 S se ruleze urmtorul cod. Ce se va gsi n variabila p?
m=[[1,2,3], [4,5,6], [7,8,9]] print m[0][2] m[0][2] = 0 print m[0] p = m[0] * 3
print p
Exemplul 10 Obiectele de tip list suport modificri. Printre operaiile pe liste se numar: pop, append, insert, remove, sort, del alte operatii: http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange Ce afieaz codul de mai jos i de ce?
n = 4 m = [[0]]*n print m m[0].append(1) print m print [1]*5
Exemplul 11 Operatorii in i not in verific dac un element aparine sau nu unei liste. Ce va afia codul de mai jos i de ce?
print ['a'] + ['s'] print 'a' in ['b','a','c'] print 'a' in ['b','at','c'] print 'a' in "abcdefg" print 'a' in ['a','b'] and 'b' in ('a', 'c') print 'a' not in ['b','a','c'] print 'a' not in ['b','at','c'] print 'a' not in "abcdefg"
Exemplul 12 Accesarea elementelor se face ca i n cazul irurilor de caractere, att cu indici pozitivi, ct i negativi.
a=[1,2,3,4,5] print a print a[::2] print a[-2] print a[::-1]
Exemplul 13 Sortarea unei liste se poate face: a. utiliznd funcia built-in sorted
b. utiliznd funcia sort care aparine obiectului list o S se testeze codul de mai jos:
lista1 = sorted([3,2,1,9,7,10]) print lista1 lista2 = [9,2,5,'sortare','test',6] lista2.sort() print lista2
1.1.5 Tupluri
1. tuplurile sunt liste imutabile 2. elementele tuplurilor nu pot fi modificate 3. functia built-in len(tuplu) ntoarce lungimea tuplului 4. ca i listele, tuplurile pornesc de la indicele 0 5. elementele au indici de la 0 la len(tuplu)-1 6. tuplu[0:len(tuplu)] conine lista cu elemente de la 0 la len(tuplu)-1 Exemplul 15 S se testeze codul de mai jos, s se tearg liniile care dau eroare. Ce se afieaz?
tuplu = ('b', '', 'f', 'k') print tuplu tuplu[2] = 'modificare' tuplu = tuplu[0:2] + (5,6,7) print tuplu print (1,2,3)*3
Exemplul 16
if a is b: print "a si b sunt referinte catre acelasi obiect" else: print "a si b sunt referinte catre", \ "obiecte diferite" print id(a),id(b) print type(a)
b.
a = [2,3,5] b = a b[2] = 0 print a if a is b: print "a si b sunt referinte catre acelasi obiect" print id(a),id(b) print type(a)
c.
a = [1,2,3] b = a del b print a
17. map(f, secventa) aplic f pe fiecare element al secvenei i ntoarce o list cu rezultatele 18. zip (iterable1, iterable2, ) funcie built-in care ntoarce o list de tupluri, n care tuplul i conine al i-lea element din fiecare secven; pentru a obine secvenele iniiale se poate utiliza zip(*zipped), unde zipped este lista de tupluri obinut la apelul:
zip(iterable1, iterable2, )
19. reduce(f, secventa) funcia reduce va ntoarce un singur rezultat obinut n urma aplicrii funciei f (care are doi parametri) pe elementele secvenei, astfel:
f(secv[0], secv[1]) = r0
Exemplul 21
f = open('myfile3.txt', 'w') print f f.write('test1 ') f.close() f = open('myfile3.txt', 'a') f.write('test2') f.close()
Exemplul 22
f = open('myfile3.txt', 'a') f.write('\ntest3') f.close() f = open('myfile3.txt', 'r') print f.readlines() f.close() f = open('myfile3.txt', 'r') print f.readline() print f.readline() f.close()
2. while
n = 10 s = 0 while n > 0: s += n n -= 1 print n, s
3. for
for i in [7, 9 , 14, 'k']: print i, print for i in range(10): print i, print for i in range(4,10): print i, print for i in "abc": print i,
print for x, y in [[2, 3], [4, 5], [6, 7]]: print (x, y),
4. intruciunile continue i break Exemplul 23 Afiarea numerelor prime din intervalul [2, 9]:
for n in range(2, 10): for x in range(2, n): if n % x == 0: print n, '=', x, '*', n/x break else: #daca s-a parcurs toata lista print n, 'este prim'
1.1.13 Funcii
1. funciile sunt obiecte 2. funciile ntorc o valoare 3. dac funcia nu ntoarce nimic, va ntoarce implicit obiectul None. Exemplul 24 Generarea irului lui Fibonacci:
def fib(n): a, b = 0, 1 while a < n:
print a, a, b = b, a+b
Ce va afisa:
print fib(7)
dar:
fib(7)
Exemplul 26 Intruciunea pass din corpul unei funcii nu face nimic; se utilizeaz n cazul n care n corpul funciei nu se implementeaza nimic, pentru a nu se genera eroare.
def f(): pass # Remember to implement this!
2. importarea de module se face in felul urmator: Exemplul 29 Se import clasa Thread din modulul threading:
from threading import Thread x = Thread() # obiect de tip Thread asignat lui x print dir()
Exemplul 30
import math print math.ceil(12.4) print math from math import floor print floor(12.6)
print round(12.6)
Exemplu 31 S se creeze un modul numit functie.py care implementeaz funcia de calculare a sumei numerelor dintr-un interval:
def suma(n,m): #suma nr de la n la m-1 s=0 for i in range(n,m): s+=i return s print "modulul:", __name__ if __name__=="__main__": print suma(3,15) print dir() print "ruleaza ca modul principal"
Aplicatii:
1. Sa se testeze urmatoarele linii de cod si sa se precizeze care genereaza eroare si de ce. De asemenea, sa se precizeze ce afiseaza liniile care nu genereaza eroare. 1. Tupluri: t=('a','b','c') t.append('x') print t + 'x' print t + ('x') print t + ('x',) print t + ('x','y') 2. Siruri de caractere: sir = 'abc' print sir + 'x' print sir + ('x') print sir + ('x',) 3. Liste: l=['a','b','c'] print l + 'x' print l + ['x'] print l + ['x',] print l + ['x','y'] l.append('x') print l l.append('y') print l l.append(['r', 't']) print l 2. S se scrie o funcie catenaADN(secv) care primete ca parametru o secven de ADN sub forma unui ir de caractere, de exemplu ATCGAACAATCAAGC, i care ntoarce catena complementar inversat, tot sub forma unui ir de caractere. 3. S se implementeze o funcie ADN(n) care genereaza o secven aleatoare de ADN ca o succesiune de baze azotate Adenina, Guanina, Timina, Ciozina sub forma unui sir de caractere de dimensiune n. Indicii: s se utilizeze funciile seed(x) i randint(a,b) din modulul random; seed(x) trebuie apelat o singur dat pentru a iniia algoritmul de generare de numere aleatoare (pseudoaleatoare);
pentru ca la fiecare apel al funciei ADN() s se genereze o alt secven de numere aleatoare, este recomandat s se seteze ca seed timpul sistemului; timpul sistemului n secunde este ntors de funcia time() care se gsete n modulul time; funcia seed(time()) trebuie apelat o singur dat n funcia ADN(); numerele aleatoare se genereaz cu funcia randint(a,b) care ntoarce un numar aleator ntre a i b.