0013 - Prefixe

De la Universitas MediaWiki

Cerința

Se dă un şir de caractere reprezentând un cuvânt. Să se afişeze lista prefixelor şi lista sufixelor cuvântului dat.

Date de intrare

Programul citeşte de la tastatură un şir 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 lista prefixelor, câte unul pe un rând al ecranului, şi lista sufixelor, câte unul pe un rând al ecranului. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".

Restricții și precizări

şirul de caractere citit va conţine cel mult 10 litere mici ale alfabetului englez

Exemplu 1

Intrare
program
Ieșire
Datele introduse corespund restricțiilor impuse.
program
progra
progr
prog
pro
pr
p
program
rogram
ogram
gram
ram
am
m


Exemplu 2

Intrare
$$%$%% 1234567898765432
Ieșire
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

# 0013 Prefixe
def validare(cuvant):       # functia de validare a datelor de intrare
    if len(cuvant) > 10:
        raise ValueError

    # daca dsatele de intrare nu corespund, ridicam eroarea ValueError

    for litera in cuvant:
        if litera < 'a' or litera > 'z':        # verificam sa fie si doar litera mica
            raise ValueError

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


def prefixe(cuvant):            # functia de rezolvare
    aux = len(cuvant)           # ne trebuie capatul cuvantului pentru a afisa prefixele

    while aux:
        print(cuvant[:aux])     # afisam pana in capat
        aux -= 1                # scadem capatul

    aux = 0                     # ne trebuie prima pozitie pentru a afisa sufixele
    while aux < len(cuvant):
        print(cuvant[aux:])     # afisam de la inceput pana la final
        aux += 1                # punem inceputul pe pozitia urmatoare ca sa fie urmatorul sufix


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 functiei de validare
        prefixe(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")