0972 - Pozitii: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
 
Linia 27: Linia 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


Linia 41: Linia 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:
Linia 51: Linia 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)
Linia 62: Linia 62:
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)                           # apelul functiei de verificare
         pozitii(sir)
         pozitii(sir)                           # apelul functiei de rezolvare


     except ValueError:
     except ValueError:
Linia 72: Linia 73:
     except IndexError:
     except IndexError:
         print("Datele de intrare nu corespund restrictiilor impuse")
         print("Datele de intrare nu corespund restrictiilor impuse")
       
</syntaxhighlight>
</syntaxhighlight>

Versiunea curentă din 2 mai 2023 17:34

Cerința

Se dă un șir de caractere. Să se determine câte vocale din șir sunt cuprinse între două consoane.

Date de intrare

Programul citește de la tastatură un sir de caractere.

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

Restricții și precizări

șirul va avea cel mult 255 caractere
șirul nu va conține litere mari

Explicație

Vocalele care respectă regula sunt:

oasele sunt fragile

Exemplu 1

Intrare
oasele sunt fragile
Ieșire
Datele introduse corespund restricțiilor impuse.
4


Exemplu 2

Intrare
Ana aRe MERE
Ieșire
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

# 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")