2299 - Media Geometrica

De la Universitas MediaWiki

Cerinta

Se dau n numere naturale. Calculați media lor geometrică.

Date de intrare

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

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi programul va afișa pe ecran media geometrică a celor n numere. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".

Restricții și precizări

1 < n ≤ 10 numerele citite vor fi cuprinse între 0 și 50 . rezultatul va fi punctat dacă diferența dintre cel afișat de program și cel corect este mai mică decât 0.01 .

Exemplu

Intrare

4
2 4 2 1

Ieșire

Datele sunt introduse corect.
2

Explicație

2⋅4⋅2⋅1−−−−−−−−√4=2

Rezolvare

def validare(n, lista):
    # Verificăm dacă numărul n respectă restricțiile impuse
    if not 1 < n <= 10:
        print("Datele nu corespund restricțiilor impuse.")
        return False

    # Verificăm dacă numerele din listă respectă restricțiile impuse
    for nr in lista:
        if not 0 <= nr <= 50:
            print("Datele nu corespund restricțiilor impuse.")
            return False

    # Toate validările au trecut
    print("Datele sunt introduse corect.")
    return True


def media_geometrica(n, lista):
    produs = 1
    for nr in lista:
        produs *= nr
    return produs ** (1 / n)


if __name__ == '__main__':
    n = int(input())
    lista = list(map(int, input().split()))
    if validare(n, lista):
        media = media_geometrica(n, lista)
        print(int(media))

Explicatie cod

Funcția validare(n, lista): Această funcție primește doi parametri, n și lista, reprezentând un număr și o listă de numere întregi. În primul rând, funcția verifică dacă n respectă restricțiile impuse: trebuie să fie mai mare decât 1 și mai mic sau egal cu 10. Dacă nu se respectă aceste restricții, afișează un mesaj de eroare și returnează False, semnalând că datele nu sunt valide. Apoi, funcția verifică dacă fiecare număr din lista respectă restricțiile impuse: trebuie să fie între 0 și 50 (inclusiv). Dacă un număr nu respectă aceste restricții, afișează un mesaj de eroare și returnează False. Dacă ambele verificări trec fără a găsi probleme, funcția afișează un mesaj că datele sunt introduse corect și returnează True, semnalând că datele sunt valide. Funcția media_geometrica(n, lista): Această funcție primește aceiași doi parametri, n și lista, ca și funcția validare. Funcția calculează media geometrică a numerelor din lista. Inițial, se inițializează o variabilă produs cu valoarea 1. Apoi, se parcurge fiecare număr nr din lista și se înmulțește produs cu nr. După ce s-au înmulțit toate numerele din lista, se calculează media geometrică ridicând produs la puterea 1 / n, unde n este numărul dat ca parametru. Funcția returnează valoarea mediei geometrice. În cadrul secțiunii if __name__ == '__main__': se realizează următoarele acțiuni:

Se citește de la tastatură un număr întreg n. Se citește de la tastatură o linie de numere întregi separate prin spațiu și se transformă într-o listă de numere întregi lista, folosind funcția map și split. Se apelează funcția validare(n, lista) pentru a verifica validitatea datelor. Dacă datele sunt valide, se calculează media geometrică utilizând funcția media_geometrica(n, lista) și se afișează valoarea acesteia (convertită la întreg folosind int()).