0013 - Prefixe: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == 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...
 
No edit summary
Line 12: Line 12:
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele introduse corespund restricțiilor impuse.
: program
: program progra progr prog pro pr p program rogram ogram gram ram am m
progra
progr
prog
pro
pr
p
program
rogram
ogram
gram
ram
am
m
<br>
<br>
== Exemplu 2 ==
== Exemplu 2 ==
Line 34: Line 21:
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
# 0013 Prefixe
# 0013 Prefixe
def validare(cuvant):
def validare(cuvant):       # functia de validare a datelor de intrare
     if len(cuvant) > 10:
     if len(cuvant) > 10:
         raise ValueError
         raise ValueError
    # daca dsatele de intrare nu corespund, ridicam eroarea ValueError


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


Line 48: Line 37:




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


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


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




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:
         cuv = input(f"Introduceti textul ")
         cuv = input(f"Introduceti textul ")     # citirea textului
         validare(cuv)
         validare(cuv)                           # apelul functiei de validare
         prefixe(cuv)
         prefixe(cuv)                           # apelul functiei de rezolvare


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

Revision as of 19:04, 2 May 2023

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>