2243 - Caracterul Mediu: Difference between revisions
Sinn Erich (talk | contribs) |
Sinn Erich (talk | contribs) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 21: | Line 21: | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; | ; Datele de intrare | ||
: | : Introduceti un caracter: F | ||
; | :Introduceti un caracter: Z | ||
: P | :Introduceti un caracter: . | ||
; Datele de ieșire | |||
: Datele sunt introduse corect. | |||
: Caracterul mediu este: P | |||
<br> | <br> | ||
Line 31: | Line 34: | ||
#2243 | #2243 | ||
def read_characters(): | def read_characters(): | ||
characters = [] | |||
character = input("Introduceti un caracter: ") | |||
while | while character != '.': | ||
characters.append(character) | |||
character = input("Introduceti un caracter: ") | |||
return | return characters | ||
def find_character_median(characters): | def find_character_median(characters): | ||
Line 42: | Line 45: | ||
caracter_mediu = chr(media) | caracter_mediu = chr(media) | ||
return caracter_mediu | return caracter_mediu | ||
def validate_input(characters): | |||
if len(characters) < 2 or '.' in characters: | |||
return False | |||
return True | |||
if __name__ == '__main__': | if __name__ == '__main__': | ||
characters = read_characters() | |||
if | if validate_input(characters): | ||
caracter_mediu = find_character_median(characters) | |||
print("Datele sunt introduse corect.") | |||
print(f"Caracterul mediu este: {caracter_mediu}") | |||
else: | else: | ||
print("Datele nu corespund restricțiilor impuse.") | print("Datele nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 21:24, 27 April 2023
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.