Python · sprawdzian

Sprawdzian z Pythona — dwa warianty z kluczem

Sprawdzian z Pythona na 45 minut w dwóch wariantach: wynik kodu, for, while i funkcja. Klucz, dane testowe i skrypt kontrolny.

45 minutSprawdzian 20 pktPliki i rozwiązania

Materiał redakcyjny TablicaPro · liceum i technikum

suma = 0
for i in range(2, n + 1, 2):
    suma = suma + i
print(suma)
20 punktów. Dwa warianty.
Klucz, dane testowe i skrypt kontrolny.

Sprawdzian obejmuje cztery zadania o rosnącej trudności: przewidywanie wyniku fragmentów kodu, program z pętlą for, program z pętlą while i prostą funkcję z listą. Wariant A i wariant B mają tę samą budowę i punktację, ale różne dane i polecenia, więc sąsiednie ławki nie rozwiązują identycznych zadań.

Zestaw jest przeznaczony na 45 minut i na klasę, która przerobiła print, zmienne, input, instrukcję if, pętle for i while oraz definiowanie funkcji. Jeśli klasa nie miała jeszcze funkcji, pomiń zadanie 4 i przelicz progi punktowe — albo użyj zestawu po lekcjach o pętlach for i while bez zadania 4.

Jak użyć zestawu

  1. Wydrukuj wariant A i wariant B — uczniowie dostają je na przemian. Rozwiązania piszą w IDLE lub innym edytorze, a na końcu zapisują pliki zad2.py, zad3.py, zad4.py oraz odpowiedzi do zadania 1 na kartce.
  2. Zadanie 1 sprawdzasz według klucza z tabeli. Zadania 2–4 możesz uruchomić na danych testowych z klucza. Pomaga w tym skrypt sprawdz_zadania.py: uruchamia pliki ucznia na przykładowych danych i pokazuje, które testy przechodzą.
  3. Skrypt jest pomocą, nie oceną. Nie ocenia czytelności, nazw zmiennych ani rozwiązań, które działają inaczej niż przewidziano. Nigdy nie uruchamiaj prac na koncie z uprawnieniami administratora i nie wysyłaj ich do narzędzi zewnętrznych bez zgody ucznia. Skrypt wykonuje kod ucznia lokalnie, więc używaj go tylko na swoim komputerze nauczyciela.
  4. Pamiętaj o przerwaniu programu z błędną pętlą while skrótem Ctrl+C. Skrypt kontrolny kończy takie programy po kilku sekundach i zgłasza przekroczenie czasu.

Wariant A

Zadanie 1 (3 pkt). Co wypisze program? Zapisz wynik każdego fragmentu (po 1 pkt).

s = 0
for i in range(1, 6):
    s = s + i * 2
print(s)
x = 17
while x > 3:
    x = x - 5
print(x)
napis = "kod"
print(napis * 2, len(napis))

Zadanie 2 (5 pkt). Pętla for. Napisz program, który wczytuje liczbę całkowitą n i wypisuje sumę liczb parzystych od 1 do n włącznie. Dla n = 10 wynik to 30, dla n = 1 wynik to 0.

Zadanie 3 (7 pkt). Pętla while. Napisz program, który wczytuje oceny (liczby całkowite) do momentu wpisania 0. Zero kończy wczytywanie i nie jest oceną. Program wypisuje średnią z dwoma miejscami po przecinku, np. dla 5, 4, 3, 0 wynik to 4.00. Jeśli nie wpisano żadnej oceny, wypisz Brak ocen.

Zadanie 4 (5 pkt). Funkcja. Napisz funkcję ile_wiekszych(lista, prog), która zwraca, ile elementów listy jest większych od prog. Dla ([3, 8, 1, 9, 5], 4) wynik to 3, a dla pustej listy 0. Wypisz wynik wywołania dla obu przykładów.

Wariant B

Zadanie 1 (3 pkt). Co wypisze program? Zapisz wynik każdego fragmentu (po 1 pkt).

s = 0
for i in range(2, 6):
    s = s + i * 3
print(s)
x = 23
while x > 5:
    x = x - 4
print(x)
napis = "ala"
print(napis * 3, len(napis))

Zadanie 2 (5 pkt). Pętla for. Napisz program, który wczytuje liczbę całkowitą n i wypisuje sumę liczb nieparzystych od 1 do n włącznie. Dla n = 10 wynik to 25, dla n = 1 wynik to 1.

Zadanie 3 (7 pkt). Pętla while. Napisz program, który wczytuje liczby całkowite do momentu wpisania -1. Liczba -1 kończy wczytywanie i nie jest brana pod uwagę. Program wypisuje największą wpisaną liczbę, np. dla 3, 5, 2, -1 wynik to 5. Jeśli nie wpisano żadnej liczby, wypisz Brak liczb.

Zadanie 4 (5 pkt). Funkcja. Napisz funkcję ile_mniejszych(lista, prog), która zwraca, ile elementów listy jest mniejszych od prog. Dla ([3, 8, 1, 9, 5], 4) wynik to 2, a dla pustej listy 0. Wypisz wynik wywołania dla obu przykładów.

Klucz i punktacja

Zadanie 1. Wariant A: 30, 2 i kodkod 3. Wariant B: 42, 3 i alaalaala 3. Pętla while w wariancie A: 17 → 12 → 7 → 2 (po wartości 2 warunek x > 3 jest fałszywy). W wariancie B: 23 → 19 → 15 → 11 → 7 → 3.

ZadanieKryteriumPunkty
2Wczytanie n jako liczby (int(input()))1
2Poprawna pętla for z range (wariant A: parzyste; B: nieparzyste)2
2Suma gromadzona w zmiennej ustawionej przed pętlą1
2Poprawny wynik także dla n = 11
3Pętla while z poprawnym warunkiem zakończenia2
3Zmienne (suma i licznik albo maksimum) poprawnie ustawione i aktualizowane2
3Poprawny wynik (średnia z dwoma miejscami albo maksimum)2
3Obsługa przypadku „brak danych”1
4Definicja funkcji z dwoma parametrami i return2
4Pętla i warunek zliczające właściwe elementy2
4Poprawny wynik dla listy pustej1

Zadanie 1 daje 3 pkt, zadanie 2 — 5, zadanie 3 — 7, zadanie 4 — 5; razem 20 punktów. Proponowana skala (dopasuj do zasad oceniania w swojej szkole): 19–20 celujący lub bardzo dobry, 16–18 bardzo dobry, 12–15 dobry, 9–11 dostateczny, 6–8 dopuszczający, 0–5 niedostateczny.

Rozwiązania wzorcowe — wariant A

n = int(input("n: "))
suma = 0
for i in range(2, n + 1, 2):
    suma = suma + i
print(suma)
suma = 0
ile = 0
liczba = int(input("Ocena (0 kończy): "))
while liczba != 0:
    suma = suma + liczba
    ile = ile + 1
    liczba = int(input("Ocena (0 kończy): "))
if ile == 0:
    print("Brak ocen")
else:
    print(f"{suma / ile:.2f}")
def ile_wiekszych(lista, prog):
    licznik = 0
    for x in lista:
        if x > prog:
            licznik = licznik + 1
    return licznik

print(ile_wiekszych([3, 8, 1, 9, 5], 4))
print(ile_wiekszych([], 4))

W zadaniu 3 równie dobre jest "{:.2f}".format(suma / ile) albo print("%.2f" % (suma / ile)). Wynik round(suma / ile, 2) zaakceptuj tylko wtedy, gdy uczeń wyjaśni, że 4.0 nie jest zapisem z dwoma miejscami — przy poleceniu „z dwoma miejscami” oczekujemy 4.00.

Rozwiązania wzorcowe — wariant B

n = int(input("n: "))
suma = 0
for i in range(1, n + 1, 2):
    suma = suma + i
print(suma)
liczba = int(input("Liczba (-1 kończy): "))
if liczba == -1:
    print("Brak liczb")
else:
    najwieksza = liczba
    while liczba != -1:
        if liczba > najwieksza:
            najwieksza = liczba
        liczba = int(input("Liczba (-1 kończy): "))
    print(najwieksza)
def ile_mniejszych(lista, prog):
    licznik = 0
    for x in lista:
        if x < prog:
            licznik = licznik + 1
    return licznik

print(ile_mniejszych([3, 8, 1, 9, 5], 4))
print(ile_mniejszych([], 4))

Zwróć uwagę na pułapkę w zadaniu 3 wariantu B: ustawienie najwieksza = 0 na początku daje błędny wynik, gdy wszystkie wpisane liczby są ujemne (np. wpisano -5, -2, a potem -1 kończące). Dlatego początkową wartość bierzemy z pierwszej wczytanej liczby.

Dane testowe

ZadanieDane wejścioweOczekiwany wynik
A21030
A210
A2712
A35, 4, 3, 04.00
A32, 02.00
A30Brak ocen
A4([3, 8, 1, 9, 5], 4)3
A4([], 4)0
B21025
B211
B2716
B33, 5, 2, -15
B3-5, -2, -1-2
B3-1Brak liczb
B4([3, 8, 1, 9, 5], 4)2
B4([], 4)0

Typowe błędy uczniów

BłądUwaga przy ocenie
range(2, n, 2) zamiast range(2, n + 1, 2)Zadanie 2: gubi liczbę n dla parzystego n; −1 pkt za wynik.
Zmienna sumy ustawiana wewnątrz pętliZadanie 2 lub 3: 0 pkt za zmienną ustawioną przed pętlą.
Zero lub −1 wliczone do średniej albo maksimumZadanie 3: sprawdź dane 5, 4, 3, 0 i 3, 5, 2, -1.
max = 0 na początku (wariant B)Zadanie 3: błędny wynik dla liczb ujemnych.
Dzielenie przez ile bez sprawdzenia, czy ile jest zeremZadanie 3: błąd ZeroDivisionError, brak punktu za „brak danych”.
return w pętli, w pierwszym obrocieZadanie 4: funkcja zwraca 0 albo 1 zamiast liczby elementów.
Funkcja nic nie zwraca, tylko wypisujeZadanie 4: brak punktów za return, ale zaakceptuj print, jeśli polecenie wyraźnie o to prosiło.

Materiały do pobrania

Materiały są dostępne bez logowania, więc klucz i zadania są publiczne. Zestaw służy do powtórki i przykładowego sprawdzianu; jeśli ma być użyty do oceniania, zmień dane i polecenia albo dopisz własny wariant C. Skrypt sprawdz_zadania.py wymaga Pythona 3.

Co dalej?

Po sprawdzianie dobrym krokiem są listy, napisy i pliki. Cały zakres Pythona — od pierwszego programu po algorytmy, wyjątki i projekty — obejmuje kurs Python w TablicaPro z prezentacjami, ćwiczeniami i testami. Do podsumowania pracy w HTML przyda się też sprawdzian HTML i CSS.

Źródła: instrukcje sterujące w oficjalnym tutorialu, definiowanie funkcji oraz formatowanie napisów f.

Poprowadź kolejne lekcje Python

Pełny kurs: prezentacje, ćwiczenia i testy do pracy z klasą.

Kup dostęp do kursu Python →

Zobacz program kursu