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.
Î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ă șiruls.Corect: întoarce un șir nou, iarsrămâne neschimbat dacă rezultatul nu este atribuit. - Greșit:
findridică o eroare când subșirul lipsește.Corect:findîntoarce ;indexridică eroarea.
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
