Obliczenie średniej ważonej

Zadanie 5 z 13 · rozdział 10Trudność: 1 z 3listyfloatśrednia

Treść zadania

Wczytaj dwie listy liczb zmiennoprzecinkowych tej samej długości: listę wartości $x_1, x_2, \ldots, x_n$ oraz listę odpowiadających im wag $w_1, w_2, \ldots, w_n$.
Oblicz średnią ważoną wartości:
$\frac{x_1 w_1 + x_2 w_2 + \ldots + x_n w_n}{w_1 + w_2 + \ldots + w_n}$.

Dane wejściowe

  • 1. linia: wartości — liczby zmiennoprzecinkowe oddzielone spacjami
  • 2. linia: wagi — liczby zmiennoprzecinkowe oddzielone spacjami (tyle samo co wartości)

Dane wyjściowe

Jedna linia: średnia ważona zaokrąglona do 2 miejsc po przecinku (np. 0.29, 7.50).

Ograniczenia

  • Wagi są nieujemne, a ich suma jest większa od zera.

Uwagi

  • Wynik sformatujesz np. tak: print(f"{wynik:.2f}").

Przykład

Wejście
0.2 0.4 0.1 0.2 0.1
2.0 5.0 0.0 2.0 1.0
Wyjście
0.29

$\frac{0.2 \cdot 2 + 0.4 \cdot 5 + 0.1 \cdot 0 + 0.2 \cdot 2 + 0.1 \cdot 1}{2 + 5 + 0 + 2 + 1} = \frac{2.9}{10} = 0.29$.

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 10

Zadania w tym rozdziale ćwiczą jednoczesną pracę na dwóch listach (lub dwóch napisach traktowanych jak ciągi znaków): łączenie, porównywanie, przechodzenie po indeksach i scalanie list posortowanych. Pod koniec rozdziału poznasz zbiory (set) — kolekcje bez powtórzeń, które pozwalają jednym działaniem wyznaczyć część wspólną, sumę czy różnicę dwóch list — oraz funkcje zip i enumerate, ułatwiające przechodzenie po dwóch ciągach naraz.

Konwencje wspólne:

  • Każde zadanie jest osobnym programem: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
  • Program nie wypisuje komunikatów typu „Podaj listę:”.
  • Każda lista zajmuje na wejściu jedną linię, a jej elementy są oddzielone pojedynczymi spacjami, np. 5 3 7 2. Najpierw podana jest lista 1, w następnej linii lista 2. Każda lista ma co najmniej jeden element.
  • Listę liczb całkowitych wczytasz tak: lista = [int(x) for x in input().split()] (dla liczb zmiennoprzecinkowych użyj float zamiast int).
  • Gdy wynikiem jest lista, wypisz ją tak, jak robi to print(lista) w Pythonie: w nawiasach kwadratowych, elementy oddzielone przecinkiem i spacją, np. [1, 2, 3]. Pusta lista to [].
  • Gdy treść mówi o elementach „oddzielonych przecinkami bez spacji”, wypisz je w jednej linii, np. 5,1,3, bez przecinka na końcu — np. print(*lista, sep=",").

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
1.0 2.0 3.0
1.0 1.0 2.0
Oczekiwane wyjście
2.25

Test 2

Nie uruchomiono
Wejście
10.0 0.0
3.0 1.0
Oczekiwane wyjście
7.50

Test 3

Nie uruchomiono
Wejście
5.5
2.0
Oczekiwane wyjście
5.50

Test 4

Nie uruchomiono
Wejście
3 4 5
1 1 1
Oczekiwane wyjście
4.00

Test 5

Nie uruchomiono
Wejście
1.0 2.0
1.0 2.0
Oczekiwane wyjście
1.67

Test 6

Nie uruchomiono
Wejście
-3.0 1.0
2.0 1.0
Oczekiwane wyjście
-1.67

Test 7

Nie uruchomiono
Wejście
-2.0 4.0 1.0
1.0 0.0 3.0
Oczekiwane wyjście
0.25
Uruchom z własnymi danymi