2680 - Poezie: Difference between revisions
Line 33: | Line 33: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# 2680 Poezie | |||
def validare(nr_versuri, lista_versuri): | |||
if len(lista_versuri) != nr_versuri: | |||
raise ValueError | |||
if nr_versuri > 15: | |||
raise ValueError | |||
for vers_neverificat in lista_versuri: | |||
for caracter in vers_neverificat: | |||
if caracter.isalpha() is False and caracter not in ".,?! ": | |||
raise ValueError | |||
print("Datele de intrare corespund restrictiilor impuse") | |||
def poezie(lista_versuri): | |||
for vers_cu_punctuatii in lista_versuri: | |||
vers_fara_punctuatii = "" | |||
for caracter in vers_cu_punctuatii: | |||
if caracter not in ".,?!": | |||
vers_fara_punctuatii += caracter | |||
ultimul_caracter = vers_cu_punctuatii[len(vers_cu_punctuatii)-1] | |||
if ultimul_caracter in ".,?!": | |||
vers_fara_punctuatii += ultimul_caracter | |||
print(vers_fara_punctuatii) | |||
if __name__ == '__main__': | |||
try: | |||
versuri = [] | |||
numar_versuri = int(input("Introduceți numărul de versuri: ")) | |||
for index in range(numar_versuri): | |||
vers = input(f"Introduceți versul {index + 1}: ").strip() | |||
versuri.append(vers) | |||
validare(numar_versuri, versuri) | |||
poezie(versuri) | |||
except ValueError: | |||
print("Datele de intrare nu corespund restrictiilor impuse") | |||
except IndexError: | |||
print("Datele de intrare nu corespund restrictiilor impuse") | |||
</syntaxhighlight> |
Revision as of 21:08, 14 April 2023
Cerința
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
Programul citește de la tastatură numărul n și cele n versuri.
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 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
- 1 ≤ n ≤ 15
- fiecare vers va conține maxim 255 de caractere
Exemplu 1
- 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
- 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
<syntaxhighlight lang="python" line>
- 2680 Poezie
def validare(nr_versuri, lista_versuri):
if len(lista_versuri) != nr_versuri: raise ValueError
if nr_versuri > 15: raise ValueError
for vers_neverificat in lista_versuri: for caracter in vers_neverificat: if caracter.isalpha() is False and caracter not in ".,?! ": raise ValueError
print("Datele de intrare corespund restrictiilor impuse")
def poezie(lista_versuri):
for vers_cu_punctuatii in lista_versuri: vers_fara_punctuatii = "" for caracter in vers_cu_punctuatii: if caracter not in ".,?!": vers_fara_punctuatii += caracter
ultimul_caracter = vers_cu_punctuatii[len(vers_cu_punctuatii)-1] if ultimul_caracter in ".,?!": vers_fara_punctuatii += ultimul_caracter
print(vers_fara_punctuatii)
if __name__ == '__main__':
try: versuri = []
numar_versuri = int(input("Introduceți numărul de versuri: ")) for index in range(numar_versuri): vers = input(f"Introduceți versul {index + 1}: ").strip() versuri.append(vers)
validare(numar_versuri, versuri) poezie(versuri)
except ValueError: print("Datele de intrare nu corespund restrictiilor impuse") except IndexError: print("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>