0012 - Initiale: Difference between revisions
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">
- 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>