bcman Posted May 26, 2012 Report Posted May 26, 2012 *Articolul original a fost scris de mine, Bogdan Condurache, pentru Wolrdit*Rezolvarea temeiRezolvarea a fost scris? de Luca George ?i este cât se poate de corect?.Exercitiul 1:nume = raw_input("Nume : ")print "Salutare, " + nume + "."Exercitiul 2:a = raw_input('Introduceti numele ultimei carti citite: ')print ''Ultima data am citit \'' + a + '\''Felicit?ri pentru rezolvare!Structuri de dateListeListele sunt prima structur? de date despre care vom vorbi ast?zi. O list? este defapt un tablou unidimensional ce poate con?ine orice alt tip de date, inclusiv: variabile de tip long (marcate cu un L la sfâr?it), stringuri (f?r? a le separa în caractere) ?i chiar ?i alte liste, a?a cum pute?i vedea în acest exemplu.ion = ['Popescu Ion', 42]george = ['Frunzescu George', 51]database = [ion, george]Dup? cum a?i putut vedea, listele sunt marcate de paranteze p?trate, obiectele listei sunt delimitate de virgul?, iar stringurile sunt scrise între ghilimele pentru a nu fi confundate cu o structur? de date cu acel nume.Listele ?i stringurile suport? indexarea, astfel, dac? am avea: string = ‘Salut’, apelând string[0] se va afi?a ‘S’. Acest lucru de poate folosi cu orice num?r pân? la 4 (stringul are 5 caractere, dar primul este 0). Dac? ne-ar interesa ultima liter? am folosi string[-1] (idem pentru -2, -3…). Indexarea se mai poate face în dou? cazuri, stringuri introduse direct, f?r? a se folosi o structur? de date:>>> ‘Salut’[1]‘a’?i în timpul citirii:>>> nume = raw_input('Introduceti numele: ')[0]Introduceti numele: Bogdan>>> nume'B' Not?! Dup? caracterele >>> v? pute?i da seama c? acest cod a fost preluat din interpretor. Rândurile precedate de aceste caractere sunt introduse de mine în interpretor, iar celelalte sunt afi?ate de acesta.Un exemplu pentru folosirea listelor este programul urm?tor care cite?te o dat? ?i o va afi?a în formatul: 24 mai 2012# Afisarea datei, primind anul, luna, si ziua ca numerelunile = [ 'ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie']an = raw_input('Anul: ')luna = raw_input('Luna (1-12): ')ziua = raw_input('Ziua (1-31): ')luna_numeric = int(luna)ziua_numeric = int(ziua)# Nu uita sa scazi 1 din luna si ziua pentru a obtine indexul corectnume_luna = lunile[luna_numeric-1]print ziua + ' ' + nume_luna + ' ' + anraw_input()SlicingAceast? tehnic? reprezint? folosirea index?rii într-un interval. Pentru a în?elege cum func?ioneaz?, ave?i exemplul urm?tor:>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> numbers[3:6][4, 5, 6]>>> numbers[0:1][1]Se poate folosi ?i aici ?mecheria cu numerele negative:>>>numbers[-3:-1][8, 9]Dar dac? vrem s? folosim ultimele 2 caractere din aceast? list?, ce facem?>>> numbers[-2:0][]Nu e rezultatul a?teptat. Totu?i, de ce este returnat? o list? goal?? Tot timpul când elementul reprezentat de termenul din stânga apare dup? cel din dreapta (adic?, penultimul element fa?? de primul) este returnat? o list? goal?. Solu?ia problemei este>>> numbers[-2:][9, 10]Acel spa?iu gol de dup? (sau de dinainte, dup? caz) de : reprezint? cap?tul listei. Se poate folosi ?i astfel:>>> numbers[:3][1, 2, 3]Defapt, pentru a afi?a întreaga list? se poate folosi ?i:>>> numbers[:][1, 2, 3, 4, 5, 6, 7, 8, 9, 10]Se poate specifica ?i un al treilea num?r dup? alte dou? puncte, care reprezint? „saltul” f?cut în timpul parcurgerii>>> numbers[0:10:2][1, 3, 5, 7, 9]Se poate specifica chiar ?i un num?r negativ>>> numbers[10:0:-2][10, 8, 6, 4, 2]Adunare ?i multiplicarePe scurt, adunarea func?ioneaz? astfel:>>> [1, 2, 3] + [4, 5, 6][1, 2, 3, 4, 5, 6]>>> 'Hello, ' + 'world!''Hello, world!'>>> [1, 2, 3] + 'world!'Traceback (innermost last): File "<pyshell#2>", line 1, in ? [1, 2, 3] + 'world!'TypeError: can only concatenate list (not "string") to listiar multiplicarea va afi?a un string de un anumit num?r de ori:>>> 'python' * 5'pythonpythonpythonpythonpython'>>> [42] * 10[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]TuplesEle sunt marcate de paranteze rotunde, iar diferen?a semnificativ? dintre liste ?i tuples este c? cele din urm? NU pot fi modificate. Câteva exemple:>>> 1, 2, 3(1, 2, 3)>>> (1, 2, 3)(1, 2, 3)>>> 4242>>> 42,(42,)>>> (42,)(42,)A?a cum a?i observat, doar scriind mai multe numere, separate de virgul?, vom ob?ine un tuple, iar pentru a crea un tuple cu un singur element, acesta va trebui precedat de virgul?.Not? de finalArticolul a ajuns destul de lung ?i am considerat c? voi prezenta restul despre liste ?i tuples în articolul urm?tor.*Am folosit exemple de cod din cartea Beginning Python: From Novice to Professional de Magnus Lie Hetland, ISBN: 159059519X *Tem?De aceast? dat? nu voi da o tem?, aceasta va fi publicat? doar dup? terminarea întregii serii Structuri de date. Quote