Didaxis
lecție · Informatică

Șiruri de caractere Python

Clasa str; secvențe, operatori și metode de căutare sau înlocuire.

AprofundarePeste programa în vigoare, pentru cine vrea mai mult.
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 2 · rezumatul lecției

Pe scurt

Un str Python este o secvență de caractere indexată de la zero. s[0] este primul caracter; s[-1] este ultimul. Secțiunea s[a:b] include poziția a și exclude b. Șirurile Python sunt imuabile: nu poți înlocui direct s[0] prin atribuire.

Desen la lecția „Șiruri de caractere Python”
2în detaliustratul 2 din 2 · pentru clasă și Bacalaureat

În detaliu

Clasa str din Python reprezintă un șir de caractere: o secvență imuabilă, indexată de la zero. s[0] este primul caracter, iar s[-1] este ultimul. Felierea s[a:b] produce un șir nou cu caracterele de la a până la b - 1; s[::-1] produce șirul inversat. Pentru că șirurile sunt imuabile, s[0] = "A" ridică TypeError; orice modificare construiește un șir nou. Operatorii sunt: + (concatenare), * (repetare), in și not in (apartenența unui subșir) și comparațiile, care sunt lexicografice (după codurile caracterelor). Metodele nu modifică șirul inițial, ci întorc un rezultat: find(sub) (prima poziție a subșirului sau ), index(sub) (la fel, dar ridică o eroare dacă lipsește), replace(vechi, nou), count(sub), upper(), lower(), strip(), split(sep) și join(lista). Funcția len(s) dă lungimea.

Exemplul 1 — concatenare și felie.

s = "ana"
nou = "A" + s[1:]
print(s, nou, nou[-1])

s[1:] este na; concatenarea dă Ana. Șirul original rămâne ana, iar ultimul caracter din nou este a. Se afișează ana Ana a. Pentru a transforma textul prin multe concatenări, este mai eficient să se acumuleze părțile într-o listă și să se folosească "".join(parte), pentru că fiecare concatenare creează un șir nou.

Exemplul 2 — căutare, înlocuire, împărțire. Pentru t = "banana": t.find("na") este 2, prima poziție a subșirului; t.find("xy") este , pentru că subșirul lipsește; t.replace("na", "X") dă baXX; t.count("a") dă 3; t.upper() dă BANANA; t.split("a") dă ['b', 'n', 'n', ''], o listă în care ultimul element este șirul gol de după ultima apariție. Nicio metodă nu schimbă t: după aceste apeluri, t rămâne banana, dacă rezultatul nu este atribuit. "-".join(["a", "b"]) dă a-b.

Exemplul 3 — operatori și comparații. "ha" * 3 este hahaha, "na" in "banana" este adevărat, iar "ana" < "are" este adevărat, deoarece la prima poziție diferită litera n precedă litera r. O majusculă precedă minuscula: "Ana" < "ana" este adevărat. Un șir este palindrom dacă este egal cu inversul lui: t == t[::-1] este fals pentru banana, dar adevărat pentru ana. Pentru a ignora spațiile de la capete se folosește " a b ".strip(), care dă a b.

Exemplul 4 — prelucrarea textului. Textul "Ana are mere" se împarte în cuvinte cu split(), care întoarce lista ['Ana', 'are', 'mere']: fără argument, mai multe spații consecutive sunt tratate ca un singur separator. Numărul cuvintelor este len(text.split()), adică 3. Cuvintele se unesc înapoi cu " ".join(...). Prima literă a fiecărui cuvânt se obține cu cuvant[0], iar conversia în majusculă a întregului text cu text.upper() dă ANA ARE MERE. Un șir se parcurge cu for ch in s, caracter cu caracter, ca o secvență. Numărul vocalelor din "Informatica" se obține cu sum(1 for ch in s.lower() if ch in "aeiou") și este 5.

Exemplul 5 — felii cu pas și erori de indice. Șirul s = "informatica" are 11 caractere, cu indicii de la 0 la 10. Atunci s[2:6] este form, s[:3] este inf, s[-4:] este tica, iar s[::2] ia caracterele de pe pozițiile 0, 2, 4, 6, 8, 10 și dă ifraia. Indexarea cu o poziție inexistentă, s[11], ridică IndexError, dar o felie nu ridică eroare: s[8:50] este ica, deoarece limita se oprește la sfârșitul șirului.

Exemplul 6 — frecvența caracterelor. Un dicționar poate număra caracterele unui text:

text = "banana"
frecv = {}
for ch in text:
    frecv[ch] = frecv.get(ch, 0) + 1
print(frecv)

Pentru b se creează intrarea 1, apoi a ajunge la 1, n la 1, la a doua apariție a devine 2, n devine 2, iar la ultima a devine 3. Se afișează {'b': 1, 'a': 3, 'n': 2}. Metoda get(ch, 0) întoarce 0 pentru un caracter încă nevăzut, deci nu apare eroare de cheie lipsă. Pentru a aduna cifrele dintr-un text, c.isdigit() selectează caracterele cifră: sum(int(c) for c in "a2b7c4" if c.isdigit()) dă .

Greșeli frecvente

  • Greșit: s[0] = "A" schimbă prima literă a șirului.
    Corect: șirurile sunt imuabile; se construiește un șir nou.
  • Greșit: s.replace("a", "o") modifică șirul s.
    Corect: întoarce un șir nou, iar s rămâne neschimbat dacă rezultatul nu este atribuit.
  • Greșit: find ridică o eroare când subșirul lipsește.
    Corect: find întoarce ; index ridică eroarea.
în contul tăuPremium

Testează-te pe această lecție

Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.

Înainte și după

Surse și referințe

Redactare proprie, conform programei:

Documente consultate

  • Programele școlare noi de informatică pentru clasele X–XII (OMEC 4370/2026, MO 591 bis/20.07.2026), CNCE, anexa 2, p. 20–21; anexa 7, p. 133; rocnee.eu
  • Python Software Foundation, Python Tutorial, capitolele 3.1.2 și 5, docs.python.org/3/tutorial/introduction.html#text

Desene: Redactare proprie (desen original), conform OMEC 4370/2026, anexa 2, Informatică X; rocnee.eu

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.