Średnia z dowolnej liczby argumentów

Zadanie 16 z 17 · rozdział 6Trudność: 2 z 3funkcje*argskrotkafloat

Treść zadania

Napisz funkcję srednia(*liczby), którą można wywołać z dowolną liczbą argumentów — np. srednia(2, 4), srednia(1, 2, 3, 4, 5) albo srednia(). Funkcja zwraca średnią arytmetyczną otrzymanych liczb, a jeśli nie dostała żadnego argumentu — zwraca None.

Program wczytuje linię z liczbami, przekazuje je do funkcji jako osobne argumenty (srednia(*liczby)) i wypisuje wynik.

Dane wejściowe

Jedna linia: zero lub więcej liczb rzeczywistych oddzielonych spacjami. Pusta linia oznacza brak liczb.

Dane wyjściowe

Jedna linia:

  • średnia z dokładnością do dwóch miejsc po przecinku albo
  • Brak danych, jeśli funkcja zwróciła None.

Uwagi

  • Gwiazdka w nagłówku def srednia(*liczby): sprawia, że wszystkie argumenty wywołania trafiają do jednej krotki liczby. Np. po wywołaniu srednia(2, 4, 9) zmienna liczby to (2, 4, 9), a po srednia() — pusta krotka ().
  • Po krotce przejdziesz pętlą for x in liczby:, a liczbę jej elementów poda len(liczby).
  • Gwiazdka przy wywołaniu działa odwrotnie: srednia(*liczby) „rozpakowuje” listę liczby na osobne argumenty.
  • Linia liczby = [float(x) for x in input().split()] w kodzie startowym zamienia wczytaną linię na listę liczb — listy poznasz dokładnie w rozdziale 9.
  • None to specjalna wartość oznaczająca „brak wyniku”. Sprawdzamy ją warunkiem wynik is None.

Przykład

Wejście
2 4 9
Wyjście
5.00

$\frac{2 + 4 + 9}{3} = 5$.

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 6

Zadania w tym rozdziale uczą pisania funkcji: definiowania ich instrukcją def, przekazywania argumentów i zwracania wyniku instrukcją return.

Konwencje wspólne:

  • Każde zadanie (i każdy podpunkt a, b, c…) to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
  • Treść mówi, jaką funkcję napisać (nazwa, parametry, zwracana wartość). Program wczytuje dane, wywołuje funkcję i wypisuje zwrócony przez nią wynik.
  • „Funkcja zwraca” oznacza użycie instrukcji return. Funkcja nie wczytuje danych i nie wypisuje wyniku sama — robi to reszta programu (chyba że treść zadania mówi inaczej).
  • Sekcja „Kod startowy” zawiera gotowy szkielet: nagłówek funkcji oraz linie, które wczytują dane i wypisują wynik. Wystarczy uzupełnić ciało funkcji.
  • Liczby na wejściu podane są w osobnych liniach — wczytuj je dokładnie w podanej kolejności.
  • Program nie wypisuje komunikatów typu „Podaj liczbę:”.

Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.

Python uruchomi się w przeglądarce przy pierwszym teście.

Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.

Testy

Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.

Test 1

Nie uruchomiono
Wejście
(brak)
Oczekiwane wyjście
Brak danych

Test 2

Nie uruchomiono
Wejście
7
Oczekiwane wyjście
7.00

Test 3

Nie uruchomiono
Wejście
1 2
Oczekiwane wyjście
1.50

Test 4

Nie uruchomiono
Wejście
-3 -1 4 10 0
Oczekiwane wyjście
2.00

Test 5

Nie uruchomiono
Wejście
1.5 2.25 3
Oczekiwane wyjście
2.25

Test 6

Nie uruchomiono
Wejście
10 20 30 40 50 60
Oczekiwane wyjście
35.00
Uruchom z własnymi danymi