Reverse a String
Inversarea unui string sună simplu (și chiar este), dar este un exercițiu clasic pentru că te forțează să te gândești la indexare, bucle și construirea treptată a unui rezultat
Am văzut deja o metodă folosind pattern-ul de acumulator
original = "Tommy"
sir_inversat = ""
for caracter in original:
sir_inversat = caracter + sir_inversat
print(sir_inversat)
Rezultatul ymmoT
Dar Python are de fapt o metodă și mai simplă: slicing-ul
nume = "Tommy"
print(nume[::-1])
Rezultatul ymmoT
Ce înseamnă [::-1]? Ține minte slicing-ul: [start:stop:step]. Când pasul este -1, Python merge înapoi. Lăsăm start și stop goale, așa că merge de la sfârșit la început. Este elegant, dar asigură-te că înțelegi mai întâi metoda manuală
Hai să încercăm o altă abordare: folosind o buclă for cu indexuri
nume = "Tommy"
sir_inversat = ""
for i in range(len(nume) - 1, -1, -1):
sir_inversat += nume[i]
print(sir_inversat)
Rezultatul ymmoT
range(len(nume) - 1, -1, -1) înseamnă: pornește de la ultimul index, coboară până la 0, cu pasul -1. Deci pentru "Tommy" (lungime 5), trecem prin indexurile 4, 3, 2, 1, 0
Dar inversarea cuvintelor dintr-o propoziție, nu a caracterelor individuale?
propozitie = "I love Vice City"
cuvinte = propozitie.split(" ")
cuvinte_inversate = cuvinte[::-1]
rezultat = " ".join(cuvinte_inversate)
print(rezultat)
Rezultatul City Vice love I
.join() este opusul lui .split(). " ".join(["a", "b", "c"]) ne dă "a b c". Am despărțit după spațiu, am inversat lista și am lipit-o înapoi cu spații
Misiune: Decodează Transmisiunea
Tocmai a sosit o transmisiune bruiată. Echipajul bănuiește că a fost trimisă invers, așa că trebuie să o întorci în două moduri și să vezi care are sens.
- Scrie o funcție inverseaza_text(text) care returnează textul inversat caracter cu caracter, folosind o buclă (nu folosi
[::-1]). - Citește transmisiunea, apoi afișează
Inversat:urmat de textul inversat caracter cu caracter. - Inversează de asemenea ordinea cuvintelor (desparte în cuvinte, inversează lista, lipește înapoi cu spații) și afișează
Ordine cuvinte:urmat de rezultat.
Intrare:
- transmisiunea, o linie de cuvinte separate prin spații
Ieșire: două linii: textul inversat caracter cu caracter, apoi textul cu ordinea cuvintelor inversată.
Exemplu
Dacă utilizatorul tastează
navigation system online
programul ar trebui să afișeze
Inversat: enilno metsys noitagivan
Ordine cuvinte: online system navigation