0115 - Medie

De la Universitas MediaWiki

Cerinţa

Să se scrie un program care citeşte de la tastatură un număr natural n şi apoi un şir de n numere naturale şi determină media aritmetică a celor pare.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale.

Date de ieşire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi programul afișează pe ecran numărul M, reprezentând media aritmetică a valorilor pare. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".

Restricţii şi precizări

0 < n < 1000 cele n numere citite vor fi mai mici decât 1.000.000 rezultatul va fi punctat dacă diferența dintre cel afișat de program și cel corect este mai mică decât 0.01. În toate seturile de date de intrare se vor afla şi valori pare.

Exemplu:

Intrare

5
8 7 8 9 10

Ieșire

Date de intrare valide
8.66

Rezolvare

 
def validare_date(n, numere):
    if n < 1 or n > 999:
        return False
    for numar in numere:
        if numar < 0 or numar > 1_000_000:
            return False
    return True


def suma_numerelor_pare(numere):
    suma = 0
    cate_pare = 0
    for numar in numere:
        if numar % 2 == 0:
            suma += numar
            cate_pare += 1
    return suma, cate_pare


def medie(numere):
    suma, cate_pare = suma_numerelor_pare(numere)
    medie = suma / cate_pare
    print(medie)


if __name__ == '__main__':
    n = int(input())
    numere = list(map(int, input().split()))
    if validare_date(n, numere):
        print("Date de intrare valide")
        medie(numere)
    else:
        print("Date de intrare invalide")

Explicatie cod:

Funcția validare_date(n, numere) primește un număr n și o listă de numere numere și verifică dacă n se află în intervalul [1, 999] și dacă fiecare număr din numere se încadrează în intervalul [0, 1_000_000]. Dacă una dintre condiții nu este îndeplinită, funcția returnează False. În caz contrar, returnează True. Funcția suma_numerelor_pare(numere) primește o listă de numere numere și calculează suma tuturor numerelor pare din listă. De asemenea, numără câte numere pare sunt în listă. Pentru fiecare număr din listă, se verifică dacă este par (adică are restul împărțirii la 2 egal cu zero), iar în caz afirmativ, se adaugă la suma și se incrementează un contor. Funcția returnează suma și numărul de numere pare găsite. Funcția medie(numere) primește o listă de numere numere și calculează media aritmetică a numerelor pare din listă. Se utilizează funcția suma_numerelor_pare() pentru a obține suma și numărul de numere pare, apoi se calculează media împărțind suma la numărul de numere pare. Rezultatul este afișat. În blocul if __name__ == '__main__':, se citește de la intrare un număr n și o serie de numere separate prin spațiu utilizând funcția input() și split(), și se stochează într-o variabilă numere. Apoi, se verifică dacă valorile citite sunt valide utilizând funcția validare_date(). Dacă valorile sunt valide, se afișează un mesaj de confirmare și se apelează funcția medie() pentru a calcula și afișa media numerelor pare. În caz contrar, se afișează un mesaj de eroare.