2680 - Poezie: Difference between revisions

From Bitnami MediaWiki
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>

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