2243 - Caracterul Mediu
Sursa: [1]
Cerinţa[edit | edit source]
Caracterul mediu a două sau al mai multor caractere este caracterul care are codul ASCII egal cu partea întreagă a mediei aritmetice a codurilor ASCII ale caracterelor date.
Se citesc mai multe caractere, pană la apariția punctului (.). Să se determine caracterul mediu al lor .
Date de intrare[edit | edit source]
Programul citește de la tastatură mai multe caractere, pană la apariția punctului (.).
Date de ieșire[edit | edit source]
Programul va afișa pe ecran caracterul mediu.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează caracterul mediu al mai multor numere.
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."
Restricţii şi precizări[edit | edit source]
Numărul de caractere citite este mai mare sau egal cu 2.
Punctul nu se ia în considerare la calcularea mediei.
Exemplul 1[edit | edit source]
- Datele de intrare
- Introduceti un caracter: F
- Introduceti un caracter: Z
- Introduceti un caracter: .
- Datele de ieșire
- Datele sunt introduse corect.
- Caracterul mediu este: P
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 2243
def read_characters():
characters = [] character = input("Introduceti un caracter: ") while character != '.': characters.append(character) character = input("Introduceti un caracter: ") return characters
def find_character_median(characters):
media = sum(ord(c) for c in characters) // len(characters) caracter_mediu = chr(media) return caracter_mediu
def validate_input(characters):
if len(characters) < 2 or '.' in characters: return False return True
if __name__ == '__main__':
characters = read_characters()
if validate_input(characters): caracter_mediu = find_character_median(characters) print("Datele sunt introduse corect.") print(f"Caracterul mediu este: {caracter_mediu}") else: print("Datele nu corespund restricțiilor impuse.")
</syntaxhighlight>
Explicatie cod:
Acest cod are două funcții și o instrucțiune de validare care îi permite să respecte anumite restricții.
Funcția read_characters() cere utilizatorului să introducă caractere până când este introdus caracterul punct (".") și returnează o listă cu toate caracterele introduse.
Funcția find_character_median(characters) primește o listă de caractere și găsește caracterul mediu, adică caracterul care are codul ASCII egal cu partea întreagă a mediei aritmetice a codurilor ASCII ale caracterelor date. În acest scop, se calculează mai întâi media aritmetică a codurilor ASCII ale caracterelor din listă cu ajutorul funcției sum() și apoi se obține caracterul mediu cu ajutorul funcției chr().
Instrucțiunea if __name__ == '__main__': verifică dacă acest cod este rulat ca un script standalone (adică direct din linia de comandă) și, în caz afirmativ, începe procesul de citire a caracterelor și calcularea caracterului median. Înainte de a apela funcția find_character_median(), instrucțiunea de validare verifică dacă numărul de caractere introduse este mai mare sau egal cu 2 și elimină punctul din lista de caractere. Dacă lista conține caractere valide, caracterul median este calculat și afișat, altfel se afișează un mesaj de eroare.