0847 - Cuvinte
Cerinţa
Se dă un șir de caractere format din cuvinte, separate prin spații. Cuvintele conțin doar litere mici ale alfabetului englez. Afișați, în ordine lexicografică, cuvintele din șir și frecvența lor de apariție.
Date de intrare
Programul citește de la tastatură șirul dat.
Date de ieșire
Programul va afișa pe ecran câte un cuvânt pe o linie, apoi un spațiu, apoi numărul de apariții ale cuvântului.
Restricţii şi precizări
- șirul dat va avea cel mult 255 de caractere și va conține cel mult 100 de cuvinte
- lungimea unui cuvânt este de cel mult 15 caractere
Exemplul 1
- Intrare
Datele de intrare corespund restrictiilor impuse maria are doua pere si ana are doua mere
- Iesire
ana 1 are 2 doua 2 maria 1 mere 1 pere 1 si 1
Exemplu 2
- Intrare
abcdefghijklmnop
- Iesire
Datele de intrare nu corespund restrictiilor impuse
Rezolvare
<syntaxhighlight lang="python" line> def main():
# Citirea șirului de caractere sir = input("Introduceti sirul de caractere: ")
# Verificarea lungimii șirului if len(sir) > 255: print("Datele de intrare nu corespund restrictiilor impuse") return
# Separarea cuvintelor din șir și stocarea lor într-o listă cuvinte = sir.split()
# Verificarea numărului de cuvinte if len(cuvinte) > 100: print("Datele de intrare nu corespund restrictiilor impuse") return
# Verificarea lungimii fiecarui cuvant for cuvant in cuvinte: if len(cuvant) > 15: print("Datele de intrare nu corespund restrictiilor impuse") return
print("Datele de intrare corespund restrictiilor impuse")
# Inițializarea dicționarului frecventa_cuvinte = {}
# Iterarea prin lista de cuvinte și numărarea frecvenței lor for cuvant in cuvinte: if cuvant in frecventa_cuvinte: frecventa_cuvinte[cuvant] += 1 else: frecventa_cuvinte[cuvant] = 1
# Afisarea cuvintelor si frecventei lor in ordine lexicografica for cuvant in sorted(frecventa_cuvinte.keys()): print(cuvant, frecventa_cuvinte[cuvant])
if __name__ == "__main__":
main()
</syntaxhighlight>