2348 - Caracterul mediu 1

De la Universitas MediaWiki

Cerința

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.

Un caracter se numeste bun daca nu este spatiu, nu este litera mare si nu este vocala .

Se citeste un sir de caractere (care poate contine si spatii). Să se determine caracterul mediu al caracterelor bune din sir .

Date de intrare

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

Date de ieșire

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."

Pe următorul rând se va afișa caracterul mediu al caracterelor bune din sir.

În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."

Restricții și precizări

  • 2 ≤ numărul de caractere citite ≤ 200
  • Caracterul mediu poate fi spatiu, litera mare sau vocala.
  • Cel putin un caracter va fi bun

Exemplu 1

Intrare
fz
Ieșire
Datele de intrare corespund restricțiilor impuse.
p

Exemplu 2

Intrare
FaZ QWaaP
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#2348 Caracterul Mediu 1
import re


def caractere_bune(sir):
    bune = []

    for caracter in sir:
        # Regex care acceptă doar literele din alfabetul englez și spațiu
        if not re.match(r"([aeiouA-Z ])", caracter):
            bune.append(caracter)

    return bune


def conditii(sir):
    return all((
        2 <= len(sir) <= 200,
        len(caractere_bune(sir)) > 0
    ))


def caracterul_mediu(sir):
    # ord() este o funcție built-in care returnează codul ASCII al unui caracter
    caractere = [ord(c) for c in caractere_bune(sir)]
    medie = sum(caractere) // len(caractere)
    # chr() este o funcție built-in care returnează caracterul corespunzător unui cod ASCII
    print(chr(medie))


if __name__ == "__main__":
    sir = input()

    if not conditii(sir):
        print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        caracterul_mediu(sir)