0012 - Initiale

From Bitnami MediaWiki
Revision as of 18:00, 2 May 2023 by Hotico Iulia Denisa (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit]

Se dă un şir de caractere reprezentând o propoziţie formată din litere mici ale alfabetului englez şi spaţii. Transformaţi şirul dat astfel încât prima şi ultima literă a fiecărui cuvânt să fie înlocuite cu litera mare corespunzătoare.

Date de intrare[edit]

Programul citeşte de la tastatură propoziţia dată.

Date de ieșire[edit]

Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou se va afișa propoziţia transformată. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".

Restricții și precizări[edit]

şirul de caractere citit conţine cel mult 255 de caractere

Exemplu 1[edit]

Intrare
mare frig rosu
Ieșire
Datele introduse corespund restricțiilor impuse.
MarE FriG RosU


Exemplu 2[edit]

Intrare
Este Rece CAld
Ieșire
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare[edit]

<syntaxhighlight lang="python" line="1">

  1. 0012 Initiale

def validare(propozitie): # functia de validare a datelor de intrare

   if len(propozitie) > 255:
       raise ValueError
   # daca nu sunt respectate datele de intrare ridicam eroarea ValueError
   for caracter in propozitie:
       # verificam caracterele sa fie doar litere mici si spatii
       if (ord(caracter) < ord('a') or ord(caracter) > ord('z')) and caracter != ' ':
           raise ValueError
   print("Datele de intrare corespund restrictiilor impuse")
   return True


def initiale(propozitie): # functia de rezolvare

   for iterator in range(len(propozitie)):   # parcurgem fiecare pozitie din sir
       litera = propozitie[iterator]
       if (iterator == 0 or iterator == len(propozitie) - 1) and 'a' <= litera <= 'z':
           # daca e litera si se afla la inceputul sau finalul sirului o facem litera mare
           # scadem 32 din codul ascii pentru a deveni majuscula
           print(chr(ord(litera) - 32), end="")
       elif (propozitie[iterator - 1] == ' ' or propozitie[iterator + 1] == ' ') and 'a' <= litera <= 'z':
           # acelasi lucru daca e litera si unul din vecini e spatiu
           print(chr(ord(litera) - 32), end="")
       else:
           print(litera, end="")


if __name__ == '__main__':

   # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
   try:
       sir = input(f"Introduceti sirul ")      # citirea sirului
       validare(sir)                           # validarea sirului
       initiale(sir)                           # apelul functiei de rezolvare
   except ValueError:
       print("Datele de intrare nu corespund restrictiilor impuse")
   except IndexError:
       print("Datele de intrare nu corespund restrictiilor impuse")
       

</syntaxhighlight>