0972 - Pozitii: Difference between revisions
No edit summary |
|||
(One intermediate revision by the same user not shown) | |||
Line 27: | Line 27: | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
# 972 Pozitii | # 972 Pozitii | ||
def validare(propozitie): | def validare(propozitie): # functia de verificare a datelor de intrare | ||
if len(propozitie) > 255: | if len(propozitie) > 255: | ||
raise ValueError | raise ValueError | ||
for caracter in propozitie: | for caracter in propozitie: # caracterul nu poate fi decat litera mica sau spatiu | ||
if ord(caracter) < ord('a') and caracter != ' ': | if (ord(caracter) < ord('a') or ord(caracter) > ord('z')) and caracter != ' ': | ||
raise ValueError | raise ValueError | ||
Line 41: | Line 41: | ||
def vocala(litera): | def vocala(litera): # functie de verificare daca litera e vocala | ||
vocale = "aeiou" | vocale = "aeiou" | ||
if litera in vocale: | if litera in vocale: | ||
Line 51: | Line 51: | ||
def pozitii(propozitie): | def pozitii(propozitie): | ||
numar = 0 | numar = 0 | ||
for iterator in range(1, len(propozitie)-1): | for iterator in range(1, len(propozitie)-1): # parcurgem sirul | ||
if vocala(propozitie[iterator]) is True and vocala(propozitie[iterator-1]) is False and \ | if vocala(propozitie[iterator]) is True and vocala(propozitie[iterator-1]) is False and \ | ||
vocala(propozitie[iterator+1]) is False and propozitie[iterator-1] != ' ' \ | vocala(propozitie[iterator+1]) is False and propozitie[iterator-1] != ' ' \ | ||
and propozitie[iterator+1] != ' ': | and propozitie[iterator+1] != ' ': # verificam daca litera e vocala si cele de langa is consoane | ||
numar += 1 | numar += 1 # daca da, le numaram | ||
print(numar) | print(numar) | ||
if | 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) # apelul functiei de verificare | ||
pozitii(sir) | pozitii(sir) # apelul functiei de rezolvare | ||
except ValueError: | except ValueError: | ||
Line 71: | Line 73: | ||
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 17:34, 2 May 2023
Cerința[edit | edit source]
Se dă un șir de caractere. Să se determine câte vocale din șir sunt cuprinse între două consoane.
Date de intrare[edit | edit source]
Programul citește de la tastatură un sir de caractere.
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 va afișa valoarea cerută. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".
Restricții și precizări[edit | edit source]
- șirul va avea cel mult 255 caractere
- șirul nu va conține litere mari
Explicație[edit | edit source]
Vocalele care respectă regula sunt:
oasele sunt fragile
Exemplu 1[edit | edit source]
- Intrare
- oasele sunt fragile
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 4
Exemplu 2[edit | edit source]
- Intrare
- Ana aRe MERE
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 972 Pozitii
def validare(propozitie): # functia de verificare a datelor de intrare
if len(propozitie) > 255: raise ValueError
for caracter in propozitie: # caracterul nu poate fi decat litera mica sau spatiu if (ord(caracter) < ord('a') or ord(caracter) > ord('z')) and caracter != ' ': raise ValueError
print("Datele de intrare corespund restrictiilor impuse") return True
def vocala(litera): # functie de verificare daca litera e vocala
vocale = "aeiou" if litera in vocale: return True else: return False
def pozitii(propozitie):
numar = 0 for iterator in range(1, len(propozitie)-1): # parcurgem sirul if vocala(propozitie[iterator]) is True and vocala(propozitie[iterator-1]) is False and \ vocala(propozitie[iterator+1]) is False and propozitie[iterator-1] != ' ' \ and propozitie[iterator+1] != ' ': # verificam daca litera e vocala si cele de langa is consoane numar += 1 # daca da, le numaram
print(numar)
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) # apelul functiei de verificare pozitii(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>