0013 - Prefixe

From Bitnami MediaWiki
Revision as of 19:53, 20 May 2023 by Hotico Iulia Denisa (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

<syntaxhighlight lang="python" line="1">

  1. 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")
       

</syntaxhighlight>