2693 - Voc Sort Desc: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se dă un șir de caractere în care cuvintele sunt formate din litere mici și mari ale alfabetului englez și sunt separate prin spații. Să se afișeze cuvintele în ordine descrescătoare după numărul de vocale și să se afișeze fiecare cuvânt pe câte o linie. Dacă două cuvinte au același număr de vocale atunci ele se vor ordona descrescător după lungime, iar dacă au aceeași lungime atunci se vor ordona lexicografic. == Date de intrare == Pro...
 
No edit summary
 
Line 47: Line 47:




# Verificăm dacă acest script este rulat direct (nu este importat ca modul)
if __name__ == '__main__':
if __name__ == '__main__':
     try:
     try:

Latest revision as of 14:28, 14 December 2023

Cerinţa[edit]

Se dă un șir de caractere în care cuvintele sunt formate din litere mici și mari ale alfabetului englez și sunt separate prin spații. Să se afișeze cuvintele în ordine descrescătoare după numărul de vocale și să se afișeze fiecare cuvânt pe câte o linie. Dacă două cuvinte au același număr de vocale atunci ele se vor ordona descrescător după lungime, iar dacă au aceeași lungime atunci se vor ordona lexicografic.

Date de intrare[edit]

Programul citește de la tastatură un șir de caractere.

Date de ieşire[edit]

Programul va afișa pe ecran cuvintele din text, în ordinea cerută, câte unul pe linie.

Restricții și precizări[edit]

  • șirul va conține maximum 255 de caractere.

Exemplul 1[edit]

Intrare
ana are mere
Ieșire
Datele introduse corespund restricțiilor impuse.
mere
ana
are


Exemplul 2[edit]

Intrare
977483
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Rezolvare[edit]

<syntaxhighlight lang="python" line>

  1. Definim funcția de verificare a valorilor s

def verificare(s_val):

   # Verificăm dacă s respectă restricțiile problemei
   if 1 <= len(s_val) <= 255 and all(c.isalpha() or c.isspace() for c in s_val):
       # Dacă valorile sunt valide, returnăm True
       return True
   else:
       # Dacă valorile nu sunt valide, ridicăm o excepție
       raise ValueError


  1. Definim funcția pentru numărarea vocalelor într-un cuvânt

def numar_vocale(cuvant_vocale):

   return sum(1 for c in cuvant_vocale if c.lower() in 'aeiou')


  1. Definim funcția pentru sortarea cuvintelor

def sortare_cuvinte(s_sort):

   cuvinte = s_sort.split()
   cuvinte.sort(key=lambda cuvant_sort: (-numar_vocale(cuvant_sort), -len(cuvant_sort), cuvant_sort))
   return cuvinte


if __name__ == '__main__':

   try:
       # Citim șirul de caractere
       s = input("Introduceti sirul de caractere: ")
       # Verificăm dacă datele introduse sunt valide
       if verificare(s):
           # Dacă datele sunt valide, afișăm un mesaj de confirmare
           print("Datele introduse corespund restricțiilor impuse.")
       # Sortăm cuvintele și le afișăm
       for cuvant in sortare_cuvinte(s):
           print(cuvant)
   # Tratăm cazul în care datele introduse nu sunt valide
   except ValueError:
       # Afișăm un mesaj de eroare
       print("Datele introduse nu corespund restricțiilor impuse.")


</syntaxhighlight>