input – program pyta użytkownika
Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.
Czego się nauczysz
Do tej pory wszystkie dane były wpisane w kodzie – żeby je zmienić, trzeba było edytować program. Od dziś program sam poprosi o wartość, a ty podasz ją w trakcie działania.
Po tej lekcji:
- pobierzesz od użytkownika tekst i liczbę,
- powiesz, jakiego typu jest wynik funkcji
input, - przekonwertujesz pobraną wartość na liczbę już w momencie pobierania,
- napiszesz program w schemacie: pobierz, policz, wypisz.
Program zaczyna rozmawiać
imie = input("Podaj imie: ")
print(f"Czesc, {imie}!")
Funkcja input zatrzymuje program, wyświetla komunikat, czeka na wpisanie tekstu i naciśnięcie Enter. To, co wpisano, oddaje jako wynik.
- Komunikat podajesz w nawiasie, w cudzysłowie.
- Warto zakończyć go dwukropkiem i spacją – wpisywany tekst nie sklei się wtedy z pytaniem.
input zawsze zwraca tekst. Zawsze.
Nawet gdy wpiszesz liczbę. Wpisanie 17 daje napis "17", a nie liczbę 17. Python nie zgaduje, co miałeś na myśli – wszystko, co przychodzi z klawiatury, jest tekstem.
wiek = input("Wiek: ")
print(type(wiek)) # <class 'str'>
print(wiek + 1) # TypeError!
Rozwiązanie znasz z lekcji 3: obudować input konwersją.
wiek = int(input("Wiek: "))
print(wiek + 1) # działa
Kolejność nawiasów: najpierw wykonuje sięinputw środku, a dopiero jego wynik trafia doint.
Trzy przypadki, które wystarczą
- Liczba całkowita (wiek, ocena, ilość):
wiek = int(input("Wiek: ")) - Liczba z kropką (cena, waga, średnia):
cena = float(input("Cena: ")) - Tekst (imię, nazwa, hasło):
imie = input("Imie: ")– bez konwersji
Na egzaminie w zdecydowanej większości przypadków wystarczy int(input(...)).
Pamiętaj o pułapkach z lekcji 3: int("4.5") i float("4,25") z przecinkiem nie zadziałają.
Schemat: pobierz, policz, wypisz
Trzy kroki, które od teraz będą wracać w każdym programie.
a = int(input("Bok a: ")) # 1. POBIERZ
b = int(input("Bok b: "))
pole = a * b # 2. POLICZ
obwod = 2 * (a + b)
print(f"Pole: {pole}") # 3. WYPISZ
print(f"Obwod: {obwod}")
- Każdą wartość pobieraj osobnym poleceniem
input. - Konwertuj od razu przy pobieraniu, nie później.
- Wynik wypisuj f-stringiem, z sensownym opisem.
Ten program wywali się, jeśli zamiast liczby wpiszesz literę. Naprawą zajmiemy się na następnej lekcji.
Spróbuj sam
Kod z tej lekcji czeka na twoje dane. Po kliknięciu „Uruchom” pod wynikiem pojawi się pole do wpisania – wpisz liczbę i naciśnij Enter.
- Uruchom program dwa razy: raz wpisz liczbę, raz literę. Przeczytaj komunikat błędu – przyda się na następnej lekcji.
- Na górze kodu są zakomentowane przykłady z
input. Usuń z nich#i sprawdź, jak działają.
Zadania z lekcji:
- Program pyta o imię i wiek, a potem wypisuje zdanie: „Anna, za rok będziesz mieć 18 lat”.
- Program pyta o dwa boki prostokąta i wypisuje jego pole oraz obwód.
- Program pyta o trzy oceny i wypisuje ich średnią z dokładnością do dwóch miejsc po przecinku.
- Program pyta o cenę netto i wypisuje cenę brutto przy stawce 23 procent. Cena ma być liczbą z kropką, więc użyj
float. - Uruchom dowolny ze swoich programów i wpisz literę zamiast liczby. Zapisz w komentarzu treść komunikatu błędu.
Sprawdź się
- Pobiorę od użytkownika tekst i liczbę.
- Powiem, jakiego typu jest wynik funkcji
input. - Przekonwertuję pobraną wartość na liczbę już w momencie pobierania.
- Napiszę program w schemacie: pobierz, policz, wypisz.
Na następnej lekcji: co zrobić, gdy użytkownik wpisze bzdurę. Nauczysz się przechwytywać błędy tak, żeby program nie przerywał działania.
Notatki
Prezentacja
Kod
Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.