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
- 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.pyoraz odpowiedzi do zadania 1 na kartce. - 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ą. - 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.
- Pamiętaj o przerwaniu programu z błędną pętlą
whileskró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.
| Zadanie | Kryterium | Punkty |
|---|---|---|
| 2 | Wczytanie n jako liczby (int(input())) | 1 |
| 2 | Poprawna pętla for z range (wariant A: parzyste; B: nieparzyste) | 2 |
| 2 | Suma gromadzona w zmiennej ustawionej przed pętlą | 1 |
| 2 | Poprawny wynik także dla n = 1 | 1 |
| 3 | Pętla while z poprawnym warunkiem zakończenia | 2 |
| 3 | Zmienne (suma i licznik albo maksimum) poprawnie ustawione i aktualizowane | 2 |
| 3 | Poprawny wynik (średnia z dwoma miejscami albo maksimum) | 2 |
| 3 | Obsługa przypadku „brak danych” | 1 |
| 4 | Definicja funkcji z dwoma parametrami i return | 2 |
| 4 | Pętla i warunek zliczające właściwe elementy | 2 |
| 4 | Poprawny wynik dla listy pustej | 1 |
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
| Zadanie | Dane wejściowe | Oczekiwany wynik |
|---|---|---|
| A2 | 10 | 30 |
| A2 | 1 | 0 |
| A2 | 7 | 12 |
| A3 | 5, 4, 3, 0 | 4.00 |
| A3 | 2, 0 | 2.00 |
| A3 | 0 | Brak ocen |
| A4 | ([3, 8, 1, 9, 5], 4) | 3 |
| A4 | ([], 4) | 0 |
| B2 | 10 | 25 |
| B2 | 1 | 1 |
| B2 | 7 | 16 |
| B3 | 3, 5, 2, -1 | 5 |
| B3 | -5, -2, -1 | -2 |
| B3 | -1 | Brak liczb |
| B4 | ([3, 8, 1, 9, 5], 4) | 2 |
| B4 | ([], 4) | 0 |
Typowe błędy uczniów
| Błąd | Uwaga 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ętli | Zadanie 2 lub 3: 0 pkt za zmienną ustawioną przed pętlą. |
| Zero lub −1 wliczone do średniej albo maksimum | Zadanie 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 zerem | Zadanie 3: błąd ZeroDivisionError, brak punktu za „brak danych”. |
return w pętli, w pierwszym obrocie | Zadanie 4: funkcja zwraca 0 albo 1 zamiast liczby elementów. |
| Funkcja nic nie zwraca, tylko wypisuje | Zadanie 4: brak punktów za return, ale zaakceptuj print, jeśli polecenie wyraźnie o to prosiło. |
Materiały do pobrania
- Pakiet: karty wariantów A i B, klucz, rozwiązania i skrypt kontrolny
- Karta ucznia — wariant A
- Karta ucznia — wariant B
- Klucz odpowiedzi dla nauczyciela
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 →