2680 - Poezie: Difference between revisions

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

  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>