2680 - Poezie: Difference between revisions
No edit summary |
|||
Line 32: | Line 32: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
# 2680 Poezie | # 2680 Poezie | ||
def validare(nr_versuri, lista_versuri): | def validare(nr_versuri, lista_versuri): # functia de validare a datelor de intrare | ||
if len(lista_versuri) != nr_versuri: | if len(lista_versuri) != nr_versuri: | ||
Line 41: | Line 41: | ||
if nr_versuri > 15: | if nr_versuri > 15: | ||
raise ValueError | raise ValueError | ||
# daca nu sunt valide datele de intrare se va ridica eroarea ValueError | |||
for vers_neverificat in lista_versuri: | for vers_neverificat in lista_versuri: | ||
for caracter in vers_neverificat: | for caracter in vers_neverificat: | ||
if caracter.isalpha() is False and caracter not in ".,?! ": | if caracter.isalpha() is False and caracter not in ".,?! ": | ||
# trebuie sa fie numar sau litera sau acele semne de punctuatie | |||
raise ValueError | raise ValueError | ||
Line 50: | Line 53: | ||
def poezie(lista_versuri): | def poezie(lista_versuri): # functia de rezolvare | ||
for vers_cu_punctuatii in lista_versuri: | for vers_cu_punctuatii in lista_versuri: | ||
vers_fara_punctuatii = "" | vers_fara_punctuatii = "" # creem versiunea de vers fara punctuatii | ||
for caracter in vers_cu_punctuatii: | for caracter in vers_cu_punctuatii: | ||
if caracter not in ".,?!": | if caracter not in ".,?!": # adaugam caracterul in acest sir doar daca nu e semn de punctuatie | ||
vers_fara_punctuatii += caracter | vers_fara_punctuatii += caracter | ||
ultimul_caracter = vers_cu_punctuatii[len(vers_cu_punctuatii)-1] | ultimul_caracter = vers_cu_punctuatii[len(vers_cu_punctuatii)-1] | ||
# ultimul caracter poate fi si semn de punctuatie deci il tratam separat | |||
if ultimul_caracter in ".,?!": | if ultimul_caracter in ".,?!": | ||
vers_fara_punctuatii += ultimul_caracter | vers_fara_punctuatii += ultimul_caracter | ||
print(vers_fara_punctuatii) | print(vers_fara_punctuatii) # afisam versul fara semne de punctuatie | ||
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: | ||
versuri = [] | versuri = [] # lista de versuri | ||
numar_versuri = int(input("Introduceți numărul de versuri: ")) | numar_versuri = int(input("Introduceți numărul de versuri: ")) # citirea numarului de versuri | ||
for index in range(numar_versuri): | for index in range(numar_versuri): | ||
vers = input(f"Introduceți versul {index + 1}: ").strip() | vers = input(f"Introduceți versul {index + 1}: ").strip() # citirea fiecarui vers pe rand | ||
versuri.append(vers) | versuri.append(vers) # adaugarea acestuia in lista | ||
validare(numar_versuri, versuri) | validare(numar_versuri, versuri) # apelul functiei de validare | ||
poezie(versuri) | poezie(versuri) # apelul functiei de rezolvare | ||
except ValueError: | except ValueError: | ||
Line 81: | Line 86: | ||
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 13:20, 4 May 2023
Cerința[edit | edit source]
Se citește un număr n, și n versuri dintr-o poezie. Fiecare vers ocupă un rând și conține litere mari și mici ale alfabetului englez, spații, și semne de punctuație . , ! ?. Să se elimine din fiecare vers toate semnele de punctuație, mai puțin cel aflat la final.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n și cele n versuri.
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 vor afișa versurile modificate.. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 15
- fiecare vers va conține maxim 255 de caractere
Exemplu 1[edit | edit source]
- Intrare
- 3
- A fost!... odata!,
- Ca, nicioada,,
- O fata? frumoasa... de imparat!
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- A fost odata,
- Ca nicioada,
- O fata frumoasa de imparat!
Exemplu 2[edit | edit source]
- Intrare
- 4
- 1 este numar mic
- 2 a mai crescut un pic,
- 3 este ceva mai mare,
- 4 cifra urmatoare.
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 2680 Poezie
def validare(nr_versuri, lista_versuri): # functia de validare a datelor de intrare
if len(lista_versuri) != nr_versuri: raise ValueError
if nr_versuri > 15: raise ValueError
# daca nu sunt valide datele de intrare se va ridica eroarea ValueError
for vers_neverificat in lista_versuri: for caracter in vers_neverificat: if caracter.isalpha() is False and caracter not in ".,?! ": # trebuie sa fie numar sau litera sau acele semne de punctuatie raise ValueError
print("Datele de intrare corespund restrictiilor impuse")
def poezie(lista_versuri): # functia de rezolvare
for vers_cu_punctuatii in lista_versuri: vers_fara_punctuatii = "" # creem versiunea de vers fara punctuatii for caracter in vers_cu_punctuatii: if caracter not in ".,?!": # adaugam caracterul in acest sir doar daca nu e semn de punctuatie vers_fara_punctuatii += caracter
ultimul_caracter = vers_cu_punctuatii[len(vers_cu_punctuatii)-1] # ultimul caracter poate fi si semn de punctuatie deci il tratam separat if ultimul_caracter in ".,?!": vers_fara_punctuatii += ultimul_caracter
print(vers_fara_punctuatii) # afisam versul fara semne de punctuatie
if __name__ == '__main__':
# din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam try: versuri = [] # lista de versuri
numar_versuri = int(input("Introduceți numărul de versuri: ")) # citirea numarului de versuri for index in range(numar_versuri): vers = input(f"Introduceți versul {index + 1}: ").strip() # citirea fiecarui vers pe rand versuri.append(vers) # adaugarea acestuia in lista
validare(numar_versuri, versuri) # apelul functiei de validare poezie(versuri) # 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>