0013 - Prefixe: Difference between revisions
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 |
||
(One intermediate revision by the same user not shown) | |||
Line 12: | Line 12: | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund restricțiilor impuse. | : Datele introduse corespund restricțiilor impuse. | ||
: program | : program | ||
progra | :progra | ||
progr | : progr | ||
prog | :prog | ||
pro | : pro | ||
pr | :pr | ||
p | :p | ||
program | :program | ||
rogram | :rogram | ||
ogram | :ogram | ||
gram | :gram | ||
ram | :ram | ||
am | :am | ||
m | :m | ||
<br> | <br> | ||
== Exemplu 2 == | == Exemplu 2 == | ||
Line 34: | Line 34: | ||
<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 50: | ||
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 74: | ||
except IndexError: | except IndexError: | ||
print("Datele de intrare nu corespund restrictiilor impuse") | print("Datele de intrare nu corespund restrictiilor impuse") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 19:53, 20 May 2023
Cerința[edit | edit source]
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[edit | edit source]
Programul citeşte de la tastatură un şir de caractere
Date de ieșire[edit | edit source]
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[edit | edit source]
- şirul de caractere citit va conţine cel mult 10 litere mici ale alfabetului englez
Exemplu 1[edit | edit source]
- 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[edit | edit source]
- Intrare
- $$%$%% 1234567898765432
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="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>