0095 - Perechi Vocale

De la Universitas MediaWiki

Cerința

Se dă un șir de caractere reprezentând o propoziție formată din litere mici ale alfabetului englez și spații. Determinați numărul de perechi de vocale consecutive din propoziție.

Date de intrare

Programul citește de la tastatură propoziția dată.

Date de ieșire

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 numărul de perechi de vocale consecutive. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".

Restricții și precizări

-șirul de caractere citit conține cel mult 255 de caractere
-se consideră vocale caracterele din mulțimea {a,e,i,o,u}

Exemplu 1

Intrare
aceasta familie are doua case
Ieșire
Datele introduse corespund restricțiilor impuse.
4


Exemplu 2

Intrare
123
Ieșire
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

# 0095 PerechiVocale
def validare(propozitie):               # functia de validare a datelor de intrare
    if len(propozitie) > 255:
        raise ValueError
    # daca dsatele de intrare nu corespund, ridicam eroarea ValueError
    for litera in propozitie:
        if litera < 'a' or litera > 'z':    # trebuie sa fie litera sau spatiu
            if litera != ' ':
                raise ValueError

    print("Datele de intrare corespund restrictiilor impuse")
    return True


def vocala(litera):                 # functie ce verifica daca litera e vocala
    lista_vocale = "aeiouAEIOU"
    if litera in lista_vocale:
        return True
    else:
        return False


def perechivocale(propozitie):      # functia de rezolvare
    nr_perechi = 0      # variabila in care numaram perechile

    for i in range(len(propozitie)-1):  # parcurgem propozitia
        if vocala(propozitie[i]) is True and vocala(propozitie[i+1]) is True:
            # daca si caracterul curent si urmatorul sunt vocale, numaram perechea
            nr_perechi += 1

    print(nr_perechi)


if __name__ == '__main__':

    # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
    try:
        cuv = input(f"Introduceti textul ")     # citirea textului
        validare(cuv)                           # apelul validarii 
        perechivocale(cuv)                      # apelul functiei de rezolvare

    except ValueError:
        print("Datele de intrare nu corespund restrictiilor impuse")
    except IndexError:
        print("Datele de intrare nu corespund restrictiilor impuse")