Python · wejście i wyjście

input i print w Pythonie — ćwiczenia z wejścia i wyjścia

Pobieranie danych, zamiana tekstu na liczby i formatowanie wyniku. Zapis rozmowy z programem, rozwiązania i typowe błędy.

45 minutPoziom podstawowyPliki i rozwiązania

Materiał redakcyjny TablicaPro · liceum i technikum

razem = 12.5 * 3
print(f"Do zaplaty: {razem:.2f} zl")
› Do zaplaty: 37.50 zl
Dwa miejsca po przecinku.

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ą input i zamienić go na liczbę przez int lub float;
  • wyjaśnić, dlaczego input zawsze zwraca napis;
  • wypisać kilka wartości w jednej linii, użyć sep, end i f-stringa z formatem :.2f;
  • rozpoznać komunikat ValueError przy błędnych danych.
CzasPraca na lekcji
0–5 minProblem: program ma pytać o dane
5–15 mininput, int, float — przewidywanie wyników
15–22 minprint z sep i end, f-string
22–37 minTrzy zadania samodzielne
37–42 minTest na innych danych, omówienie błędów
42–45 minPytania 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

ObjawCo sprawdzić
TypeError: can only concatenate str (not "int") to strDo 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 floatZamiast kropki wpisano przecinek (12,5).
Wynik 12.5 zamiast 12.50Brak formatu :.2f w f-stringu.
Iloraz wypisuje wiele cyfrBrakuje round(..., 2).
ZeroDivisionErrorDrugą liczbą jest 0; w tym zadaniu przyjmujemy poprawne dane.

Pytania kontrolne i punktacja

  1. Jaki typ danych zwraca input?
  2. Co wypisze print("A", "B", sep="-")?
  3. 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 →

Zobacz program kursu