0012 - Initiale

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

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

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

Exemplu 1

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


Exemplu 2

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


Rezolvare

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