Sprawdzanie testu (zip, enumerate)

Zadanie 12 z 13 · rozdział 10Trudność: 1 z 3zipenumeratenapisy

Treść zadania

Uczeń rozwiązał test wyboru. Wczytaj klucz poprawnych odpowiedzi oraz odpowiedzi ucznia — oba jako napisy, w których znak na pozycji i to odpowiedź na pytanie i + 1 (np. ABCDA oznacza: pytanie 1 — A, pytanie 2 — B itd.).

Dla każdego pytania wypisz, czy uczeń odpowiedział poprawnie, a na końcu podsumuj wynik.

Dane wejściowe

  • 1. linia: klucz odpowiedzi — napis z wielkich liter A–E, bez spacji
  • 2. linia: odpowiedzi ucznia — napis tej samej długości co klucz, z wielkich liter A–E

Dane wyjściowe

  • Dla każdego pytania (numerowanych od 1) jedna linia:
    • nr: OK — gdy odpowiedź jest poprawna,
    • nr: źle (poprawna: X) — gdy jest błędna, gdzie X to poprawna odpowiedź z klucza.
  • Ostatnia linia: Wynik: p/n (q%), gdzie p to liczba poprawnych odpowiedzi, n — liczba pytań, a q — procent poprawnych odpowiedzi z jedną cyfrą po przecinku (np. 80.0, 66.7).

Uwagi

  • zip(a, b) łączy dwa ciągi w pary kolejnych elementów: zip("AB", "AC") daje pary ("A", "A") i ("B", "C").
  • enumerate(ciag, start=1) dodaje do każdego elementu jego numer, licząc od 1: enumerate("XY", start=1) daje pary (1, "X") i (2, "Y").
  • Razem:
    ```python
    for nr, (poprawna, udzielona) in enumerate(zip(klucz, odpowiedzi), start=1):
    ...
    `
  • Procent sformatujesz tak: f"{procent:.1f}".

Przykład

Wejście
ABCDA
ACCDA
Wyjście
1: OK
2: źle (poprawna: B)
3: OK
4: OK
5: OK
Wynik: 4/5 (80.0%)

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
A
A
Oczekiwane wyjście
1: OK
Wynik: 1/1 (100.0%)

Test 2

Nie uruchomiono
Wejście
A
B
Oczekiwane wyjście
1: źle (poprawna: A)
Wynik: 0/1 (0.0%)

Test 3

Nie uruchomiono
Wejście
ABC
CBA
Oczekiwane wyjście
1: źle (poprawna: A)
2: OK
3: źle (poprawna: C)
Wynik: 1/3 (33.3%)

Test 4

Nie uruchomiono
Wejście
DDDD
DDDD
Oczekiwane wyjście
1: OK
2: OK
3: OK
4: OK
Wynik: 4/4 (100.0%)

Test 5

Nie uruchomiono
Wejście
ABCDABCD
ABCDDCBA
Oczekiwane wyjście
1: OK
2: OK
3: OK
4: OK
5: źle (poprawna: A)
6: źle (poprawna: B)
7: źle (poprawna: C)
8: źle (poprawna: D)
Wynik: 4/8 (50.0%)

Test 6

Nie uruchomiono
Wejście
BCA
BCB
Oczekiwane wyjście
1: OK
2: OK
3: źle (poprawna: A)
Wynik: 2/3 (66.7%)
Uruchom z własnymi danymi