0012 - Initiale: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
Line 22: Line 22:
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
# 0012 Initiale
# 0012 Initiale
def validare(propozitie):
def validare(propozitie):           # functia de validare a datelor de intrare
     if len(propozitie) > 255:
     if len(propozitie) > 255:
         raise ValueError
         raise ValueError
 
    # daca nu sunt respectate datele de intrare ridicam eroarea ValueError
     for caracter in propozitie:
     for caracter in propozitie:
         if ord(caracter) < ord('a') and caracter != ' ':
        # verificam caracterele sa fie doar litere mici si spatii
         if (ord(caracter) < ord('a') or ord(caracter) > ord('z')) and caracter != ' ':
             raise ValueError
             raise ValueError


Line 36: Line 37:




def initiale(propozitie):
def initiale(propozitie):           # functia de rezolvare
 
     for iterator in range(len(propozitie)):   # parcurgem fiecare pozitie din sir
     for iterator in range(len(propozitie)):
         litera = propozitie[iterator]
         litera = propozitie[iterator]
         if (iterator == 0 or iterator == len(propozitie) - 1) and 'a' <= litera <= 'z':
         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="")
             print(chr(ord(litera) - 32), end="")
         elif (propozitie[iterator-1] == ' ' or propozitie[iterator+1] == ' ') and 'a' <= litera <= 'z':
         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="")
             print(chr(ord(litera) - 32), end="")
         else:
         else:
Line 49: Line 52:


if __name__ == '__main__':
if __name__ == '__main__':
   


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


     except ValueError:
     except ValueError:
Line 60: Line 63:
     except IndexError:
     except IndexError:
         print("Datele de intrare nu corespund restrictiilor impuse")
         print("Datele de intrare nu corespund restrictiilor impuse")
       
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 18:00, 2 May 2023

Cerința[edit | edit source]

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 | edit source]

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

Date de ieșire[edit | edit source]

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 | edit source]

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

Exemplu 1[edit | edit source]

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


Exemplu 2[edit | edit source]

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


Rezolvare[edit | edit source]

<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>