Menu

print() i input() w Pythonie: wczytywanie danych i wypisywanie wyników

Jak działają funkcje print() i input() w Pythonie, a do tego separatory, znaki końca linii i zamiana danych od użytkownika na liczby.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Dwie funkcje, które sprawiają, że program jest interaktywny

Większość pierwszych programów w Pythonie ma ten sam kształt: poproś użytkownika o coś przez input(), zrób coś z odpowiedzią i pokaż wynik przez print(). Te dwie wbudowane funkcje to sposób, w jaki twój kod rozmawia ze światem.

Omówmy je po kolei.

W najprostszej postaci print() wypisuje w terminalu jedną linię tekstu:

To wypisuje słowo hello, a po nim znak nowej linii. To właśnie znak nowej linii oddziela na ekranie jedno wywołanie print od następnego.

W jednym wywołaniu możesz przekazać kilka wartości, a Python wstawi między nie spacje:

Wynik:

Name: Ada Age: 36

Wartości nie muszą być napisami. print wywołuje str() na każdym argumencie, więc możesz swobodnie mieszać typy:

Zmiana separatora

Jeśli spacja między wartościami ci nie odpowiada, użyj sep:

Zmiana zakończenia linii

Domyślnie print dopisuje znak nowej linii. Użyj end, żeby to zmienić, na przykład żeby wypisywać wszystko w tej samej linii:

end="" to sposób na budowanie linii kawałek po kawałku.

Domyślnie print pisze na stdout (standardowe wyjście), czyli tam, gdzie zwykle pojawia się tekst w terminalu. Argumentem file możesz przekierować go na stderr, do pliku albo do dowolnego innego obiektu przypominającego plik:

Do sformatowanego wyjścia (dwa miejsca po przecinku, wyrównane kolumny, separatory w dużych liczbach) używaj f-stringów wewnątrz print:

input(): wczytywanie danych od użytkownika

input(prompt) zatrzymuje program, pokazuje użytkownikowi komunikat i czeka. Cokolwiek użytkownik wpisze, zanim naciśnie Enter, wraca jako napis.

Trzy rzeczy w input, na które nabierają się początkujący:

Zawsze zwraca napis

Nawet jeśli użytkownik wpisze 42, dostajesz napis "42". Nie da się na nim bezpośrednio liczyć:

Dlatego często zobaczysz int(input(...)) albo float(input(...)) w jednej linii. Jeśli użytkownik wpisze coś, co nie jest poprawną liczbą, int() zgłosi ValueError, który porządnie obsłużymy w rozdziale o wyjątkach.

Komunikat jest opcjonalny

Jeśli nie przekażesz napisu z komunikatem, input() czeka w ciszy, co prawie zawsze jest złym wyborem: użytkownik nie ma pojęcia, o co go prosisz. Zawsze przekazuj jasny komunikat:

Niczego nie obcina

Wszystko, co wpisze użytkownik, łącznie ze spacjami na początku i na końcu, wraca dokładnie w tej postaci. Jeśli ma to znaczenie dla twojej logiki, wywołaj .strip():

Malutki kompletny program

Wszystko razem: kilka linii, które proszą użytkownika o dane i wypisują krótkie podsumowanie:

Dwanaście linii. Czyta się je od góry do dołu jak instrukcję, a nie jak kod. Właśnie taki styl chce promować ta dokumentacja.

A co z debugowaniem przez print?

Czasem słychać, że "prawdziwi programiści używają debuggera, a nie wywołań print". To przesada. Print to całkiem dobre narzędzie do debugowania, zwłaszcza w małych skryptach i szybkich eksperymentach. Wstawiaj wywołania print hojnie, gdy próbujesz coś rozgryźć, i usuwaj je, gdy skończysz.

Dwie małe sztuczki ułatwiające życie:

= wewnątrz f-stringa wypisuje zarówno nazwę, jak i wartość, co oszczędza mnóstwo powtarzalnego print("name =", name).

Idziemy dalej

print i input dają pełną pętlę rozmowy: zapytaj, odczytaj, odpowiedz. Następny rozdział zaczyna dokładać warunki: instrukcję if i operatory, które decydują, co robi program na podstawie wartości, jakie widzi.

Najczęściej zadawane pytania

Co robi print() w Pythonie?

Wypisuje wartości w terminalu. print("hello") wypisuje hello, a po nim znak nowej linii. Możesz przekazać kilka wartości oddzielonych przecinkami, a print() domyślnie wstawi między nie spację.

Jak działa input() w Pythonie?

input(prompt) wstrzymuje program, pokazuje użytkownikowi komunikat, czeka, aż coś wpisze i naciśnie Enter, a potem zwraca wpisany tekst jako napis. Zawsze jako napis: jeśli chcesz liczbę, opakuj wywołanie w int(...) albo float(...).

Jak wypisać tekst w tej samej linii w Pythonie?

Przekaż end="" do print. Domyślnie print dodaje po wyjściu znak nowej linii, a ustawienie end na pusty napis (albo dowolny inny znak) go zastępuje.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ