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.
print(): wypisywanie wyników
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.
print trafia na stdout
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.