InfoBook.ro ← Harta anului
Modul 07 · Șiruri Python & clasa str
Modul 07 · Conținuturi 1.2 + 3.2

Textul, ca structură de date

Ai văzut șirurile „pe metal" în C++ (Modulul 05). Python le tratează elegant: clasa str — o colecție ordonată și imutabilă de caractere, cu metode pentru orice prelucrare de text.

🎯 Obiectiv 1Înțelegi modelul liniar: succesiune ordonată, IMUTABILĂ — marea diferență față de char[].
🎯 Obiectiv 2Stăpânești operatorii: indexare, slicing, in, +, *, comparare lexicografică.
🎯 Obiectiv 3Folosești metodele uzuale: find, replace, split — cerute explicit de programă.
1

Modelul liniar: ordonat și imutabil

Un str e ca textul unui eseu: caracterele au poziții fixe. Se scrie între apostrofuri, ghilimele — sau triple, pentru texte lungi.

'apostrofuri'

s = 'Salut' — pentru texte scurte; poți pune ghilimele înăuntru: 'a zis "da"'.

"ghilimele"

s = "Salut" — identic; alegi ce nu apare în text. Ca citatele din vorbirea curentă.

'''triple'''

Pentru texte pe mai multe rânduri — paragrafe, e-mailuri întregi.

⚠ Marea diferență față de C++: IMUTABILITATEA

1# C++ (M05): merge!
2// char s[] = "arac";
3// s[1] = 't'; → "atac"
1# Python: EROARE!
2s = "arac"
3s[1] = "t" # TypeError!
4s = s[:1] + "t" + s[2:] # corect: șir NOU
Imutabil = odată creat, un str nu se mai modifică. Orice „modificare" construiește de fapt un ȘIR NOU — inclusiv toate metodele (upper, replace…) returnează șiruri noi, lăsând originalul neatins.
2

Indexare și slicing — pe text

Exact regulile de la clasa list (clasa a IX-a) — dar celulele sunt caractere. Indici pozitivi deasupra, negativi dedesubt.

s = ""
s[ : ]
Trucul palindromului: s == s[::-1] — o singură linie verifică dacă textul citit invers e identic. În C++ îți trebuia o buclă întreagă!
3

Operatorii clasei str

Cei din programă: apartenență, concatenare, multiplicare, comparare lexicografică.

apartenența: in

Subșirul există în text? — ce făcea strstr în C++, acum un singur cuvânt.

"mat" in "Informatica" # True
"xyz" not in "abc" # True

concatenare + · multiplicare *

Lipire și repetare — construiești mesaje din bucăți.

"Salut, " + nume + "!"
"-" * 20 # linie de 20 de cratime

comparare lexicografică

Ca în dicționar, caracter cu caracter — ce făcea strcmp, acum cu < și ==.

"ana" < "bogdan" # True
"Ana" < "ana" # True ('A'=65 < 'a'=97)

ord() și chr() — puntea ASCII

Codurile din Modulul 05, în Python: ord dă codul, chr dă caracterul.

ord('A') # 65 chr(97) # 'a'
chr(ord(c) + 1) # următoarea literă
4

Metodele uzuale — laboratorul de text

Cele trei cerute explicit de programă (find, replace, split) plus rudele lor. Testează pe textul tău:

s = ""
Cele trei din programă, pe scurt: find(secv) = poziția primei apariții (−1 dacă lipsește — NU eroare, ca la list.index!) · replace(vechi, nou) = șir NOU cu toate aparițiile înlocuite · split(separator) = LISTA bucăților — puntea dintre str și list.
5

Aplicația din programă: verificatorul de parole

Sistemul care analizează fiecare simbol: litere mari, mici, cifre, caractere speciale. Scrie o parolă și privește verificările aprinzându-se.

parola = ""
1mari = mici = cifre = spec = 0
2for c in parola:
3 if c.isupper(): mari += 1
4 elif c.islower(): mici += 1
5 elif c.isdigit(): cifre += 1
6 else: spec += 1
7ok = mari > 0 and mici > 0 and cifre > 0 and len(parola) >= 8
Al doilea scenariu din programă — etichetele de colete: numele și adresa se REUNESC cu + („Ana Pop" + ", " + "Str. Teilor 5") sau se DESPART cu split(", ") — concatenarea și separarea, în viața reală a unui depozit.
6

Verificare rapidă

Cinci întrebări despre clasa str.

7

Fișa de sinteză

Clasa str, condensată.

Modelul liniar: succesiune ORDONATĂ și IMUTABILĂ de caractere — s[i] = 'x' dă TypeError!
„Modificarea" = construirea unui șir nou: s = s[:1] + "t" + s[2:] sau prin metode.
Operatori: indexare (și negativă), slicing, in, +, *, comparare lexicografică (<, ==).
Metodele programei: find (poziție sau −1), replace (șir nou), split (→ listă de bucăți).
Punți: ord/chr ↔ ASCII (M05) · split/join ↔ clasa list (IX) · s[::-1] = palindromul într-o linie.
Metodele returnează șiruri NOI — originalul rămâne neatins; salvează rezultatul: s = s.upper().
Exersează: pe pbinfo.ro, categoria „Șiruri de caractere" — rezolvă aceleași probleme o dată în C++ (char[] + cstring, Modulul 05) și o dată în Python (str) — compară codul!
← anteriorModul 06 · Matrice de caractere urmează →Modul 08 · Dicționare & clasa dict