2692 - Lung Sort Desc
De la Universitas MediaWiki
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 pe ecran, fiecare cuvânt pe câte o linie, în ordinea descrescătoare a numărului de litere. Dacă două cuvinte au același număr de litere atunci ele se vor afișa în ordine lexicografică.
Date de intrare
Programul citește de la tastatură șirul de caractere.
Date de ieșire
Programul va afișa cuvintele din șir pe ecran, conform cerinței.
Restricții și precizări
- șirul va conține maximum 255 de caractere;
Exemplul 1
- Intrare
- ana are mere
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- mere
- ana
- are
Exemplul 2
- Intrare
- 1234
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
#2692- Lung Sort Desc
def sortare_cuvinte(s):
cuvinte = s.split() # separăm șirul în cuvinte
numar_litere = [len(cuvant) for cuvant in cuvinte] # listă cu numărul de litere al fiecărui cuvânt
# sortăm cuvintele în funcție de lungimea acestora (descrescător) și în caz de egalitate, le sortăm în ordine alfabetică
cuvinte_sortate = sorted(cuvinte, key=lambda x: (-len(x), x))
# afișăm cuvintele sortate
for cuvant in cuvinte_sortate:
print(cuvant)
if __name__ == '__main__':
s = input('Introduceți șirul: ')
if len(s) <= 255 and not any(c.isdigit() for c in s): # verificarea restricțiilor
print("Datele de intrare corespund restricțiilor impuse.")
sortare_cuvinte(s) # sortăm și afișăm cuvintele
else:
print("Datele de intrare nu corespund restricțiilor impuse.")