Dzisiejszy temat na artykuł o Pythonie, to funkcja pobierająca dane wprowadzone przez użytkownika z klawiatury ⏏️. "input" w języku Python to jeszcze jedna funkcja zaliczana do tych najbardziej podstawowych, zaraz obok "print" 😉.

FUNKCJA "INPUT" W JĘZYKU PYTHON POBIERZE DANE WPROWADZANE Z KLAWIATURY!

Najpierw krótki opis czym jest ta funkcja, a potem przejdziemy do prostych przykładów 😄!

DO CZEGO SŁUŻY FUNKCJA "INPUT" W JĘZYKU PYTHON?

W języku Python, funkcja "input" służy do pobierania łańcucha znaków wprowadzonego przez użytkownika przy użyciu klawiatury (o samych funkcjach możesz się dowiedzieć więcej z załączonego materiału ℹ️) 😊. Po zatwierdzeniu wprowadzonej wartości, funkcja zwraca na wyjściu podany przez nas łańcuch znaków (w dalszej części pokażę co to dla nas oznacza) 🔥! W ten sposób możesz stworzyć program, który będzie przyjmował dane, a one potem zostaną użyte do dalszych operacji 🤩.

W tym miejscu zwracam uwagę na typ danych ⚠️. Bez względu na wszystko, zawsze będzie to łańcuch znaków, a to oznacza, że gdy będziemy chcieli pobierać inne wartości np. liczby, musimy już sami zadbać o konwersję i bezpieczeństwo 😳! To również pokażę na prostych przykładach 👍.

PRZYKŁADY UŻYCIA FUNKCJI "INPUT" W JĘZYKU PYTHON

Pokażę Ci teraz przykłady użycia funkcji "input" 👀.

WYWOŁYWANIE FUNKCJI "INPUT" BEZ PRZYPISYWANIA WYNIKU DO ZMIENNEJ

Najprostszą postacią jest samo wywołanie funkcji bez niczego 👇:

print(input())

Jednakże nie radzę stosować takiego zapisu ❌. Użycie funkcji bez parametru spowoduje to, że w chwili uruchomienia programu pokaże Ci się tylko kursor, bez żadnego jasnego komunikatu, że w tej chwili program oczekuje od Ciebie wprowadzenia wartości 💥! Wtedy sama "pauza" podczas działania może sprawiać wrażenie, że program się zawiesił, a w rzeczywistości tylko czeka na odpowiedź z naszej strony (lecz nie będzie o tym wiedział 😅) 🙂.

Właśnie dlatego dużo lepiej wywołać funkcję przekazując jedyny parametr jaki akceptuje: to jest treść wiadomości jaka zostanie ukazana w momencie oczekiwania wartości przez program 👇:

print(input('Wprowadź dowolny łańcuch znaków: '))

Teraz jak uruchomisz program, wyświetli się komunikat o podanej treści, a kursor znajdzie się zaraz po ostatnim jego znaku, czekając na ruch ze strony użytkownika ✅. Wtedy nikt nie będzie zdezorientowany 🙂. Mała rzecz, a z pewnością oszczędzi problemów 👍.

Pamiętaj, że tutaj nie występuje automatyczne dodanie odstępu pomiędzy nimi, stąd musisz samodzielnie dodać spację ⚠️.

Pobieranie wprowadzanego łańcucha znaków z funkcji "input" w języku Python bez przypisywania do zmiennej

"input" w języku Python pozwala na uzyskiwanie danych poprzez wprowadzenie przez użytkownika łańcucha znaków! Najlepiej skorzystać z parametru, który wypisze komunikat dla użytkownika, że aktualnie oczekuje od niego podania wartości, aby wiedział co ma zrobić w danym momencie działania programu.

W obu przypadkach, po wprowadzeniu własnej treści zatwierdzasz klawiszem Enter i wtedy program wypisuje na wyjściu podany przez Ciebie łańcuch znaków ❤️. Jednak jeżeli podajemy jakieś dane, to po to, aby później zostały one jakoś użyte w dalszym ciągu 💡. I właśnie dlatego bardziej praktycznym użyciem tej funkcji będzie przypisanie jej wyniku do zmiennej 😄!

WYWOŁYWANIE FUNKCJI "INPUT" Z PRZYPISYWANIEM WYNIKU DO ZMIENNEJ

Oto prosty przykład podstawienia wyniku funkcji "input" do zmiennej 👇:

typed_string = input('Wprowadź dowolny łańcuch znaków: ')

print('Podany łańcuch znaków: ' + typed_string)

Po wprowadzeniu przez nas łańcucha znaków, zmienna przyjmie to właśnie jak łańcuch znaków 😊.

Pobieranie wprowadzanego łańcucha znaków z funkcji "input" w języku Python z przypisywaniem do zmiennej

Częstą praktyką jest przypisywanie wyniku funkcji "input" do zmiennej, aby później skorzystać z niej w dalszym ciągu działania programu!

Tylko co zrobić, gdy chcemy mieć dla przykładu liczby 🤔?

Wtedy trzeba skorzystać z funkcji konwertujących na wskazany typ danych💥! Konwersja w programowaniu oznacza nic innego, jak próbę "przeniesienia" wartości z jednego typu danych do drugiego ℹ️. Zobacz, że jest mowa o "próbie", co oznacza że to jak najbardziej może się nie powieść ❌!

Możemy próbować skonwertować literę 'A' na liczbę całkowitą i to jest przykład, po którym nikt nie wie jakiej wartości można by się spodziewać 😆. Jeżeli konwersja się nie udaje, to dochodzi do awarii programu w postaci zgłoszenia wyjątku typu "ValueError" (temat obsługi wyjątków został szerzej opisany w załączonym materiale ℹ️) 😱!

W zależności od typu danych na jaki chcemy skonwertować wprowadzone przez nas dane, będzie konieczne inne podejście do przyjmowania danych i sprawdzania ich poprawności (tzw. "walidacja" ℹ️) 🔒. Pokażę jak zrobić coś takiego na przykładzie liczb całkowitych 🔢.

KONWERSJA WYNIKU FUNKCJI "INPUT" NA INNY TYP DANYCH

Aby przekonwertować podaną przez nas daną w postaci liczby (będącej wciąż łańcuchem znaków ⚠️!) na liczbę całkowitą (bez ułamka), korzystamy z funkcji "int" do próby skonwertowania podanego łańcucha na liczbę 👇:

typed_int = int(input('Wprowadź dowolną liczbę całkowitą: '))

print('Podana liczba całkowita: ' + typed_int)

Całe wywołanie funkcji "input" zostaje "otoczone" wywołaniem funkcji "int", co oznacza że program najpierw poprosi o podanie przez nas łańcucha znaków (w treści komunikatu wskazujemy wyraźnie, powinna to być liczba całkowita 🫵), następnie funkcja "int" dokonuje próby przekonwertowania łańcucha znaków i w przypadku powodzenia, wypisuje naszą daną już jako typ całkowitoliczbowy przy pomocy funkcji "print" ✅.

Pierwszy krok mamy za sobą - to jest użycie odpowiedniej funkcji konwertującej ✔️. Natomiast jeżeli zależy nam na trzymaniu się dobrych praktyk programistycznych, powinniśmy uwzględnić również przypadek "a co, jak to nie będzie liczba?" 💪. Przechodzimy do walidacji ⏩!

JAK BEZPIECZNIE KONWERTOWAĆ WARTOŚCI NA INNY TYP DANYCH?

Aby zagwarantować poprawność wprowadzonej danej jako liczby całkowitej, musimy wziąć pod uwagę 2 punkty 👇:

  1. zbadanie wprowadzonego łańcucha znaków czy spełnia wszystkie warunki celem jednoznacznego stwierdzenia, że to jest liczba całkowita i łańcuch można bezpiecznie skonwertować,
  2. możliwość powtórnego wprowadzenia łańcucha w przypadku, gdy podana wartość nie reprezentuje liczby całkowitej i próba konwersji spowodowałaby problemy.

Zacznijmy od pkt. 1 1️⃣. Zastanówmy się z jakich znaków musi składać się podany łańcuch, aby uznać go za liczbę całkowitą 🧩. Odpowiedź jest prosta: każdy znak musi reprezentować cyfrę 🎯! Natomiast może być jeszcze sytuacja wprowadzenia liczby ujemnej, zatem musimy również wziąć pod uwagę przypadek występowania znaku minusa jako pierwszego w kolejności 😲!

Czyli mamy 2 możliwości 👇:

  1. łańcuch znaków składa się wyłącznie z cyfr (liczba dodatnia),
  2. łańcuch znaków posiada pierwszy znak jako minus (-), a reszta znaków jest samymi cyframi (liczba ujemna).

Całość możemy zbudować w ten sposób (uprzedzam, że kod może być nieco trudniejszy do zrozumienia 🧠!):

def string_is_int(string):
	if string[0] == '-':
		return string[1:].isdigit()
	
	return string.isdigit()

Piszemy sobie funkcję badającą czy podany parametr łańcuchowy reprezentuje liczbę całkowitą (bez ułamka) 🔍. Do sprawdzania czy łańcuch znaków składa się wyłącznie z cyfr, bardzo przydaje się "isdigit" ❤️. Jest to jedna z metod łańcuchowych sprawdzająca, czy każdy znak jest cyfrą i zwraca wartość logiczną jako wynik badania ("True" lub "False"), która w naszym przypadku pasuje jak ulał 😊.

Najpierw sprawdzamy przypadek liczby ujemnej, czyli czy pierwszy znak reprezentuje minus (instrukcje warunkowe są wyjaśnione w osobnym artykule ℹ️) 👀. Jeżeli tak, to kolejnym krokiem jest sprawdzenie czy reszta znaków jest cyframi 💡. Tutaj posługujemy się metodą "przycinania" łańcucha ("slicing"), aby wykluczyć pierwszy znak i tak sprawdzamy resztę znaków czy jest cyframi ✅. Rezultat metody "isdigit" jest wynikiem końcowym funkcji i mamy obsłużony przypadek podania liczby ujemnej 😄!

W przypadku wprowadzenia liczby dodatniej mamy jeszcze prostszą sytuację bowiem wystarczy sprawdzić łańcuch taki, jaki jest czy składa się z samych cyfr (używając tej samej metody "isdigit") i wynik działania zwrócić na wyjściu. Tyle 😁!

Jeżeli powyższe zapisy operujące na łańcuchu są dla Ciebie niezrozumiałe, zapoznaj się z materiałem o łańcuchach znaków, w których znajdują się przykłady ukazujące jak je obsługiwać ℹ️.

Teraz gdybyśmy chcieli to połączyć z wprowadzaniem przez nas łańcucha znaków funkcją "input", możemy to zrobić tak 👇:

typed_string = input('Wprowadź dowolną liczbę całkowitą: ')

if string_is_int(typed_string):
	print(int(typed_string))
else:
	print('Podana wartość nie jest liczbą całkowitą.')

Idąc po kolei 👇:

  1. wprowadzamy łańcuch znaków funkcją "input",
  2. instrukcja warunkowa sprawdza czy łańcuch reprezentuje liczbę całkowitą (korzystamy z funkcji opisanej wyżej),
    1. jeżeli tak, to program konwertuje łańcuch przy użyciu funkcji "int" i wypisuje ją funkcją "print",
    2. jeżeli nie, to program wypisuje komunikat funkcją "print", że podany łańcuch nie reprezentuje liczby.

W taki sposób punkt nr 1 walidacji zostaje zamknięty ☑️!

Punkt nr 2 dotyczy możliwości wielokrotnego wprowadzania łańcucha, aż w końcu uda się podać liczbę 😉. Tutaj potrzebna jest pętla "while" i umieszczenie obu kroków (wprowadzanie łańcucha i weryfikacja jego poprawności) do jej środka (więcej informacji o działaniu pętli "while" możesz przeczytać z załączonego artykułu ℹ️)💡.

To jest kod 👇:

typed_string = ''

while (not string_is_int(typed_string)):
	typed_string = input('Wprowadź dowolną liczbę całkowitą: ')

print(int(typed_string))

Tłumacząc wiersz po wierszu 👇:

  1. tworzymy zmienną i przypisujemy jej pusty łańcuch jako oznaczenie "braku danej",
  2. w pętli "while", dopóki łańcuch nie reprezentuje liczby całkowitej, wprowadzamy łańcuch znaków funkcją "input",
  3. program konwertuje łańcuch przy użyciu funkcji "int" i wypisuje ją funkcją "print".

To jest koniec punktu nr 2 ☑️! Tak wygląda poprawne podejście do przyjmowania danych określonego typu 🔥!

Pobieranie wprowadzanego liczby całkowitej z funkcji "input" w języku Python

Aby uzyskać inny typ danych z funkcji "input" niż łańcuch znaków, musimy sami napisać kod konwertujący dane na wskazany typ danych, dbając wcześniej o weryfikację poprawności!


To wszystko, co miałem do przekazania w sprawie funkcji "input" w języku Python 😊!

PODOBNE ARTYKUŁY