CyberStars

String Methods

Un string este mai mult decât o simplă bucată de text pe care o afișăm. Python ne oferă multe unelte ca să inspectăm și să modificăm string-uri, iar noi o să ne uităm la cele mai utile


Cât de lung este un nume? Câte litere are? len() ne spune

nume = "Tommy Vercetti"
print(len(nume))

Rezultatul 14. Da, spațiul contează și el. Fiecare caracter contează, inclusiv virgulele, punctele, semnele de exclamare și orice alt caracter. Încearcă cu len("password-!@#

quot;)


Putem transforma un string în majuscule sau minuscule

nume = "tommy vercetti"
print(nume.upper())   # TOMMY VERCETTI
print(nume.lower())   # tommy vercetti

Observă punctul dintre nume și upper(). Sintaxa cu punct înseamnă: „ia acest string și aplică-i această metodă". O metodă este pur și simplu o funcție care aparține a ceva, în cazul acesta unui string

Important: nume.upper() NU schimbă variabila originală. Returnează un string nou

nume = "tommy vercetti"
nume.upper()
print(nume)

Va afișa tommy vercetti, cu litere mici ca înainte, pentru că nu am făcut nimic cu rezultatul lui nume.upper(). Ca să-l păstrăm cu adevărat cu majuscule

nume = "tommy vercetti"
nume = nume.upper()
print(nume)

Acum nume stochează noua valoare. Acest tip de capcană prinde absolut pe toată lumea la început. Dacă citim de sus în jos, povestea e simplă: avem un nume, apoi îl transformăm în litere mari și actualizăm numele, apoi îl afișăm


Putem lipi string-uri împreună cu +. Acest lucru se numește concatenare

prenume = "Tommy"
nume_familie = "Vercetti"
nume_complet = prenume + nume_familie
print(nume_complet)

Rezultatul TommyVercetti. Dacă vrem să avem un spațiu între prenume și nume de familie, trebuie să îl concatenăm și pe el

prenume = "Tommy"
nume_familie = "Vercetti"
nume_complet = prenume + " " + nume_familie
print(nume_complet)

Putem lua o bucată dintr-un string indicând poziția lui de început și sfârșit

nume = "Tommy Vercetti"
print(nume[0])      # T
print(nume[1])      # o
print(nume[0:5])    # Tommy
print(nume[6:14])   # Vercetti

nume este o variabilă - știm deja asta. De ce nume[0] = T? De ce nume[1] = o? De fapt, de ce nume[ceva] = altceva?

Să ne imaginăm variabila nume ca pe un șir de cutiuțe, fiecare cutiuță ținând un singur caracter. Sub fiecare cutiuță este scris numărul poziției ei

Tommy Vercetti
^ 0 1:green

În programare, numărarea începe de la 0, NU de la 1. Deci nume[0] este prima literă (cutiuța de la poziția 0, evidențiată mai sus), nume[1] este a doua, și așa mai departe. Când scriem nume[ceva], ceva este numărul poziției, iar Python ne dă caracterul din acea cutiuță. De exemplu, nume[9] înseamnă „dă-mi caracterul de pe poziția 9 din nume", adică caracterul c

nume[0:5] înseamnă „de la poziția 0, până la dar FĂRĂ să includă poziția 5". Deci luăm pozițiile 0, 1, 2, 3, 4, care formează Tommy. La fel ca la range() în bucla for, sfârșitul este exclusiv (nu îl luăm)

Putem de asemenea să omitem unul dintre numere

nume = "Tommy Vercetti"
print(nume[:5])    # Tommy   (de la inceput pana la 5 - 1)
print(nume[6:])    # Vercetti (de la 6 pana la sfarsit)

Misiune: Decodorul de Poziții

Stația citește dintr-un cuvânt de cod doar anumite poziții. Programul citește un cuvânt într-o variabilă și afișează, pe linii separate:

  • caracterul de pe poziția 0
  • caracterul de pe poziția 3
  • primele 4 caractere
  • caracterele de la poziția 4 până la sfârșit

Exemplu

Dacă utilizatorul tastează

Andromeda

programul ar trebui să afișeze

A
r
Andr
omeda