Pierwszy program, który „rozmawia” z użytkownikiem, to dla uczniów duży krok: do tej pory wartości były wpisane w kodzie, a teraz zależą od tego, co ktoś wpisze. Ta lekcja uczy pobierania danych funkcją input, zamiany tekstu na liczby i czytelnego wypisywania wyników przez print oraz f-string.
Scenariusz jest przeznaczony na 45 minut dla klasy, która zna zmienne i podstawowe typy danych — na przykład po pierwszej lekcji Pythona.
Przygotowanie stanowisk
Potrzebny jest Python 3 i edytor lub IDLE. Rozpakuj pakiet z sekcji materiałów do osobnego folderu i uruchamiaj skrypty z tego folderu. Program uruchomisz przez Run → Run Module albo poleceniem python start.py, python3 start.py lub py start.py.
Cele i plan lekcji
Po zajęciach uczeń potrafi:
- pobrać tekst od użytkownika funkcją
inputi zamienić go na liczbę przezintlubfloat; - wyjaśnić, dlaczego
inputzawsze zwraca napis; - wypisać kilka wartości w jednej linii, użyć
sep,endi f-stringa z formatem:.2f; - rozpoznać komunikat
ValueErrorprzy błędnych danych.
| Czas | Praca na lekcji |
|---|---|
| 0–5 min | Problem: program ma pytać o dane |
| 5–15 min | input, int, float — przewidywanie wyników |
| 15–22 min | print z sep i end, f-string |
| 22–37 min | Trzy zadania samodzielne |
| 37–42 min | Test na innych danych, omówienie błędów |
| 42–45 min | Pytania kontrolne |
Napis, liczba i formatowanie
Funkcja input wyświetla podpowiedź, czeka na tekst i zawsze zwraca napis (str), nawet jeśli użytkownik wpisał 16. Dlatego input("Ile masz lat? ") + 1 zakończy się błędem TypeError: nie można dodać napisu do liczby. Najpierw trzeba zamienić tekst na liczbę: int(...) dla liczb całkowitych albo float(...) dla ułamków (z kropką, np. 12.5). Wpisanie tekstu, który nie jest liczbą, kończy program błędem ValueError.
print przyjmuje wiele argumentów i wstawia między nimi spację. Parametr sep zmienia separator, a end — to, co pojawia się na końcu (domyślnie nowa linia). F-string, czyli napis z literą f przed cudzysłowem, wstawia wartości w klamrach: f"{razem:.2f} zl" wypisze liczbę z dwoma miejscami po przecinku.
Zadania
Zadanie 1. Powitanie. Zapytaj o imię i wiek. Wypisz powitanie oraz informację, ile lat uczeń będzie miał za rok.
Zadanie 2. Kalkulator. Pobierz dwie liczby (float) i wypisz sumę, różnicę, iloczyn oraz iloraz zaokrąglony do dwóch miejsc.
Zadanie 3. Bilety. Pobierz cenę biletu i liczbę biletów. Wypisz kwotę do zapłaty dwa razy: zwykłym print oraz f-stringiem z dwoma miejscami po przecinku. Na koniec wypisz A B C z separatorem - i znakiem ! na końcu.
Dla chętnych: zapytaj o kwotę do zapłaty i wpłaconą sumę, a potem wypisz resztę w formacie z dwoma miejscami po przecinku.
Rozwiązanie i wyniki
# Zadanie 1
imie = input("Jak masz na imie? ")
wiek = int(input("Ile masz lat? "))
print("Czesc,", imie + "!")
print("Za rok bedziesz miec", wiek + 1, "lat.")
# Zadanie 2
a = float(input("Pierwsza liczba: "))
b = float(input("Druga liczba: "))
print("Suma:", a + b)
print("Roznica:", a - b)
print("Iloczyn:", a * b)
print("Iloraz:", round(a / b, 2))
# Zadanie 3
cena = float(input("Cena biletu: "))
ile = int(input("Liczba biletow: "))
razem = cena * ile
print("Do zaplaty:", razem, "zl")
print(f"Do zaplaty: {razem:.2f} zl")
print("A", "B", "C", sep="-", end="!\n")
Zapis rozmowy z programem dla danych Ola, 16, 7, 2, 12.5, 3 (podpowiedź i odpowiedź w jednej linii, tak jak na ekranie terminala):
Jak masz na imie? Ola
Ile masz lat? 16
Czesc, Ola!
Za rok bedziesz miec 17 lat.
Pierwsza liczba: 7
Druga liczba: 2
Suma: 9.0
Roznica: 5.0
Iloczyn: 14.0
Iloraz: 3.5
Cena biletu: 12.5
Liczba biletow: 3
Do zaplaty: 37.5 zl
Do zaplaty: 37.50 zl
A-B-C!
Zwróć uwagę na Do zaplaty: 37.5 zl w zwykłym print i 37.50 zl w f-stringu z formatem. Zadanie dla chętnych (rozszerzenie.py, kwota 37.5, wpłata 50) wypisuje:
Kwota do zaplaty: 37.5
Wplacono: 50
Reszta: 12.50 zl
Typowe błędy
| Objaw | Co sprawdzić |
|---|---|
| TypeError: can only concatenate str (not "int") to str | Do napisu z input dodano liczbę; najpierw użyj int lub float. |
| ValueError: invalid literal for int() | Użytkownik wpisał tekst albo liczbę z kropką tam, gdzie program oczekuje int. |
| ValueError: could not convert string to float | Zamiast kropki wpisano przecinek (12,5). |
| Wynik 12.5 zamiast 12.50 | Brak formatu :.2f w f-stringu. |
| Iloraz wypisuje wiele cyfr | Brakuje round(..., 2). |
| ZeroDivisionError | Drugą liczbą jest 0; w tym zadaniu przyjmujemy poprawne dane. |
Pytania kontrolne i punktacja
- Jaki typ danych zwraca
input? - Co wypisze
print("A", "B", sep="-")? - Dlaczego w f-stringu piszemy
{razem:.2f}?
Odpowiedzi: Napis (str). A-B. Aby wypisać liczbę z dwoma miejscami po przecinku.
Proponowana punktacja (razem 10 punktów): zadanie 1 — input i int 2 pkt, poprawne wypisanie 1 pkt; zadanie 2 — dwie liczby float 1 pkt, cztery działania 2 pkt, zaokrąglenie 1 pkt; zadanie 3 — kwota 1 pkt, f-string z formatem 1 pkt, sep i end 1 pkt. Zadanie dla chętnych nie jest wymagane do pełnej oceny.
Materiały do pobrania
Rozpakuj ZIP przed otwarciem plików. Materiały są dostępne bez logowania; publiczne rozwiązanie służy nauce i samodzielnemu sprawdzeniu, a nie poufnemu sprawdzianowi.
Co dalej?
Następny krok to instrukcje warunkowe i pętle, które pozwalają reagować na wpisane dane. Ten materiał rozwija dział o wejściu i wyjściu w kursie Python w TablicaPro, gdzie znajdziesz prezentacje, ćwiczenia i testy do prowadzenia lekcji.
Źródła techniczne: funkcja input w dokumentacji oraz formatowanie napisów. Zobacz też lekcję o instrukcjach warunkowych.
Poprowadź kolejne lekcje Python
Pełny kurs: prezentacje, ćwiczenia i testy do pracy z klasą.
Kup dostęp do kursu Python →