Welcome to the second passage of our Python programming language series. We already have Python and IDLE installed on our computer. We can act!
If you don't remember what IDLE is, take a look at the previous post.
We will take our first steps in the IDLE main window called "shell". The shell is an interactive window that is great for writing very short programs (scripts) for purely training purposes. And that's where we start: writing mini-scripts in shell. In the future, when we want to write slightly more elaborate scripts, we will do so in Python files.
There is such a superstition in computer science circles that you will not get lucky in programming if you don't write your first program and have the words Hello World! generated on the screen.
If so, let's do it! The text that Python has to "print" (on the screen) for you is technically called a string. We must (obligatorily) mark the beginning and the end of the string with quotation marks (or if you prefer: with an apostrophe):
"Hello World!" or 'Hello World!'
Now it's time to get to know the first Python "syntax" command. The first command we'll know is print(). Note the parentheses used after the word print. Within these parentheses you put the content you want to print.
Therefore:
open IDLE
type: print('Hello World!')
press ENTER
The effect should be like this:
We told Python to type out (print) the phrase Hello World! — and Python did it.
If you've achieved the above effect, congratulations! You just wrote your first Python program.
Let us note again how the shell works. The typed commands are executed immediately. That is why it is suitable for short, ad hoc exercises — and basically only for that.
Writing and reading
Writing and reading are two basic skills in today's world, right? The third is definitely the ability to count. Likewise, with coding, "writing" and "reading" are the two most important ways you communicate with the computer. When you want the computer to "expose information", you will use the write command. On the other hand, when the computer is supposed to "receive information", we will use the read command. As it has been for many many years in the good old PASCAL… Unfortunately, in Python, there is no write command and no read command. Instead, we have print and input[1]. We have already learned how print works. So it's time for input.
Remember about the parentheses for Python commands. The correct syntax looks like this:
input()
When you write the input () command, you assume that someone — some user — will open the script you wrote and that script will ask them for some information. Thanks to the input () command contained in the code, the information given by the user will be "read" by the program.
For example, it might look like this:
print('Enter your name:')
input()
As you can see, here we have a program consisting of two lines of code. The first line is the command to write a message to the user. The second line is the command to read the answer given by the user.
Considering the user's involvement in the current task, it is difficult to imagine further work in the Python shell. Recall: the shell immediately executes the commands. Therefore, it is not suitable for activities in which you, as the author, create a program, and later someone else (the user) runs it on his computer. "Later" in this case means "whenever he wants". Whether it's in a minute, an hour or a year. Therefore, in order to make your script permanent, we will save it to a file. The user will need to run the file first to execute the commands.
When you want to save the code as a file, in IDLE: select File menu, command New File. In the newly opened window, enter the two mentioned lines of code:
print('Enter your name: ')
input()
Now select "Save as …" from the File menu, give the file a name such as Exercise01 and save it with the extension .py in the directory where you will store your training files.
Great, you just created your first Python script which you saved as a file. We will check how our script works in a moment. A little more patience.
Working with Python files
Working with Python files is very easy. We have just shown you how to save new content to a file.
Create files
Developers work with files in two ways. When their creative inspiration comes and they want to write a piece of code, they use menu in IDLE. They open a new file (File → New File) and enter the code commands they invented, and then save it. Others, who do not like IDLE, use a simple text editor (for example Microsoft Notepad, which is a regular notebook probably known to every Windows user). We mentioned it in the first post and promised to get back to the topic.
Yes it's true — you can save your code in a notepad file. When you write a few lines of code in your notebook and decide that you want to save the effect of your work, select the "Save As …" command, give the file a name, but instead of the suggested .txt file extension, type py after the dot. This way you have a Python script ready to run at any time.
Running existing files
How is it with running files? The easiest way to run a Python file is to find it in the correct directory (for example using the well-known File Explorer) and double-click the mouse. Remember that opening a file actually means running it: the Python interpreter will execute the commands you have written to the file.
However, there may be times when you want to open a file in order to edit it further, without running it. Then, after selecting a file from the list, right-click it and select "Open with", and then select Notebook from the list of available programs.
You can also run the file with IDLE. Select the file, right click it and select "Edit with IDLE". The file will be opened for editing. Now select the Run menu, Run module command. The file will run.
In the early stages of learning Python, it's a good idea to run files this way. This has the advantage that the effect of the file ("end screen") remains visible in the shell until you close it yourself. On the other hand, when you run the file using the traditional method, the generated content appears and disappears immediately. For inexperienced programmers, this is extremely irritating; they describe the effect as follows: I found the Python file in the directory, chose it with the mouse, clicked twice. A black screen flashed before my eyes and disappeared.
Once we get to know Python a little better, we promise to come back to the topic and present a simple trick to prevent the screen from disappearing. For today, we advise you to run files via IDLE. Considering that we will (for now) write rather short "training" scripts, this way of running them will be the most convenient.
We check how our file works
It's time to run the script we wrote in Exercise01.py.
Find this file on your computer, select it with a single mouse click, then right click and select "Edit with IDLE". Our file will open as for editing
Now select Run → Run Module
The file is launched. The first command is carried out, which is the command to display the sentence "Enter your name" on the screen.
Type in any name and press Enter. Nothing special is going to happen because — so far — we haven't told Python how to react to a user entering a name. However, you can be sure that Python will remember the name you entered. It's always been a little success, isn't it?
In the next post, we will expand our script and try to have a slightly longer conversation between our program and the user.
Summary
In this passage, we wrote our first Python script saved as a file. The file can be run by the user at any time. The script contained in this file will exchange information with the user, writing messages to the user (print command) and reading the responses given by the user (input command).
From now on, we will write and save our code in Python files, and the shell will only play an auxiliary role.
Appendix
In this appendix, we'll try to take a deeper look at the input() command. So we will have to use a bit more technical (specialized) vocabulary.
What we commonly call a command is in fact a Python function. There will be time to learn more about the functions later. For now, let's just remember that input() is one of Python's built-in (that is, ready-to-use) functions. When the input() function is called, the screen displays a cursor waiting for a string to be entered. In other words: when the input() function is executed, the program flow stops until the user enters the specified value.
Another important observation: each programming language has strictly defined data types that a program written in that language can accept. Python is no different. Examples of data types in Python are:
- strings — that is a string of characters; simple text type; it's just a sequence of Unicode characters,
- numeric types (numeric) — there are three of them, incl. int type (short for integer), representing integers,
- logical type (boolean) — True / False.
Data that the user enters "from the keyboard" cannot be sent directly to the program, as they must first be given a type acceptable to Python. Regarding external input, the developers of Python decided that Python would accept data in the string format only.
Therefore, the input() function does three things:
- reads data entered from the keyboard,
- converts them into a string,
- returns to the program.
What does this mean in practice?
When you enter two characters, such as 12, from the keyboard, Python reads them as a string, not a number. Characters are just characters, symbols, they have no numerical value for Python. To find out, do a simple Python shell exercise, write two strings connected with a plus and hit ENTER, e.g. '12' + '3'
By the way, it is worth mentioning here that returning value is one of the most explored topics in various Python guides and tutorials. Undoubtedly, we will encounter it more than once.
Probably reading that the input() function returns a string value to the program, you ask yourself: wait a minute, this is not always the desired situation. What if we want the user to give us a number? What then? When we ask the user for their first name, the text-based answer is absolutely OK. However, when asked (for example) for his age, the answer given should be recognized as a number. Python solves this easily. It is recommended to use the int() function, which converts a string into a number. To achieve the desired effect, wrap the function input() with the function int(), that is, write:
int(input())
[1] in fact, read and write exist in Python, but for the purpose of working with database files
Odcinek‑2
Odcinek 2: Hello World!
Witajcie w drugim odcinku naszego cyklu poświęconego językowi programowania Python.
Mamy już Pythona oraz IDLE zainstalowane na naszym komputerze. Możemy działać!
Jeśli nie pamiętasz, czym jest IDLE, zerknij do poprzedniego postu.
Pierwsze kroki wykonamy w oknie głównym IDLE, które nosi nazwę "powłoki" (shell).
Powłoka to interaktywne okno, świetnie nadające się do pisania bardzo krótkich programów (skryptów), przeznaczonych do celów czysto treningowych. I właśnie od pisania-mini skryptów w shellu zaczniemy. W przyszłości, gdy zechcemy pisać odrobinę bardziej rozbudowane skrypty, będziemy to robić w plikach Pythona.
Jest taki przesąd w kręgach informatyków, iż nie poszczęści Ci się w programowaniu, jeśli nie napiszesz swojego pierwszego programu, polecając wygenerowanie na ekranie napisu Hello World! (Witaj Świecie!).
Skoro tak, zróbmy to! Tekst, który Python ma dla Ciebie "wydrukować" (wyświetlić na ekranie), nazywa się fachowo łańcuchem znaków. Początek i koniec łańcucha znaków musimy (obowiązkowo) oznaczyć cudzysłowem (lub jeśli wolisz: apostrofem):
"Hello World!" lub 'Hello World!'
Pora poznać pierwsze polecenie ze "składni" (syntaksu) Pythona[1]. Tym pierwszym poleceniem, jakie poznamy, jest print(). Zwróć uwagę na nawiasy, użyte po słowie print. W nich umieszczasz treść, jaką chcesz wydrukować.
Zatem:
otwórz IDLE
wpisz: print('Hello World!')
naciśnij Enter
Efekt powinien być taki:
Nakazaliśmy Pythonowi wypisać (wydrukować) frazę Hello World! – i Python to wykonał.
Jeśli uzyskałeś powyższy efekt, gratulacje! Właśnie napisałeś swój pierwszy program w Pythonie.
Zauważmy raz jeszcze, jak działa shell. Wpisywane polecenia są natychmiast wykonywane. Dlatego właśnie nadaje się on do krótkich, doraźnych ćwiczeń – i w zasadzie tylko do tego.
Pisanie i czytanie
Pisanie i czytanie to dwie podstawowe umiejętności w dzisiejszym świecie, prawda? Trzecią jest na pewno umiejętność liczenia.
Podobnie będzie w kodowaniu: "pisanie" i "czytanie" to dwa najważniejsze sposoby twojego komunikowania się z komputerem. Gdy chcesz, aby komputer "dał informację", użyjesz polecenia napisz. Gdy natomiast komputer ma "przyjąć informację", użyjemy polecenia przeczytaj.
W Pythonie niestety polecenie napisz nie brzmi "write", a polecenie przeczytaj nie brzmi "read". Tak jak to było dawno temu choćby w poczciwym PASCALu. Zamiast tego mamy print i input.
Poznaliśmy już jak działa print. Czas więc na input.
Pamiętaj o nawiasach przy poleceniach Pythona. Prawidłowa składnia wygląda tak:
input()
Pisząc polecenie input() zakładasz, że ktoś – jakiś użytkownik – otworzy napisany przez Ciebie skrypt i ten skrypt poprosi go o podanie pewnej informacji. Dzięki zawartemu w kodzie poleceniu input(), podana przez użytkownika informacja zostanie "zaczytana" przez program.
Może to wyglądać na przykład tak:
print('Podaj swoje imię:')
input()
Jak widać, mamy tu program składający się z dwóch linijek kodu. Pierwsza linijka stanowi polecenie napisania komunikatu dla użytkownika. Druga linijka stanowi polecenie zaczytania odpowiedzi udzielonej przez użytkownika.
Biorąc pod uwagę udział użytkownika w obecnym zadaniu, trudno wyobrazić sobie dalszą pracę w powłoce Pythona (shellu). Przypomnijmy: shell natychmiast wykonuje zadane polecenia. Nie nadaje się zatem do takich działań, w których Ty jako autor tworzysz program, a później ktoś inny (użytkownik) uruchamia go na swoim komputerze. "Później" oznacza w tym przypadku: "kiedykolwiek zechce". Czy to za minutę, za godzinę, czy za rok.
Dlatego, w celu utrwalenia twojego skryptu, zapiszemy go w pliku. Użytkownik, aby wykonać polecenia, będzie musiał najpierw uruchomić plik.
Gdy chcesz zapisać kod w postaci pliku, wybierz w IDLu: menu File, polecenie New File. W nowo-otwartym oknie wpisz dwie wspomniane linie kodu:
print('Podaj swoje imię:')
input()
Teraz z menu File wybierz polecenie "Save as…", nadaj plikowi jakąś nazwę, np. Exercise01 i zapisz go z rozszerzeniem .py w katalogu, w którym przechowywał będziesz swoje pliki treningowe.
Świetnie, właśnie stworzyłeś swój pierwszy skrypt w Pythonie, który zapisałeś w formie pliku.
Za chwilkę sprawdzimy jak nasz skrypt działa. Jeszcze trochę cierpliwości.
Praca z plikami Pythona
Praca z plikami Pythona jest banalnie prosta. Przed chwilą pokazaliśmy, jak zapisać nową treść w pliku.
Tworzenie plików
Programiści pracują z plikami na dwa sposoby. Gdy najdzie ich twórcza wena i chcą zapisać jakiś fragment kodu, korzystają z menu w IDLu. Otwierają nowy plik (File → New File) i wprowadzają wymyślone przez siebie polecenia kodu, a następnie zapisują.
Inni, którzy nie przepadają za IDLem, korzystają z prostego edytora tekstu (przykładowo Microsoft Notepada, czyli zwykłego notatnika znanego pewnie każdemu użytkownikowi Windowsa). Wspomnieliśmy o nim w pierwszym poście i obiecaliśmy wrócić do tematu.
Tak, to prawda. Twój kod możesz zapisywać w pliku notatnika. Gdy napiszesz w notatniku kilka linijek kodu i stwierdzisz, że chcesz zachować efekt pracy, wybierz polecenie "Zapisz jako…", nadaj plikowi nazwę, ale zamiast sugerowanego rozszerzenia nazwy pliku .txt wpisz po kropce py. W ten sposób masz gotowy skrypt Pythona, do uruchomienia w każdej chwili.
Uruchamianie istniejących plików
No właśnie. A jak to jest z uruchamianiem plików?
Najprostszy sposób uruchamiania pliku Pythona to odnalezienie go we właściwym katalogu (choćby za pomocą dobrze Ci znanego Eksploratora Plików) i dwukrotne kliknięcie myszą. Pamiętaj, że otwarcie pliku oznacza de facto jego uruchomienie: interpreter Pythona wykona polecenia, które zapisałeś w pliku.
Może jednak się zdarzyć, że chcesz otworzyć plik w celu dalszego jego edytowania, bez uruchamiania. Wówczas po wybraniu pliku z listy kliknij prawym przyciskiem myszy i wybierz opcję "Otwórz za pomocą", a następnie z listy dostępnych programów wybierz notatnik.
Możesz także uruchomić plik przy pomocy IDLa. Wybierz plik, kliknij go prawym przyciskiem i wybierz "Edit with IDLE". Plik zostanie otwarty do edycji. Teraz wybierz menu Run, polecenie Run module. Plik zostanie uruchomiony.
W początkowej fazie nauki Pythona warto właśnie uruchamiać pliki tym sposobem. Ma to tę zaletę, że efekt działania pliku ("ekran końcowy") pozostaje widoczny w shellu tak długo, dopóki sam go nie zamkniesz. Gdy natomiast uruchamiasz plik tradycyjną metodą, generowana treść pojawia się i natychmiast znika. Dla niedoświadczonych programistów jest to wyjątkowo irytujące; opisują oni ów efekt następująco: odnalazłem interesujący mnie plik Pythona w katalogu, najechałem myszą, dwa razy kliknąłem. Mrygnęło mi coś przed oczyma, jakby czarny ekran i znikło.
Gdy trochę lepiej poznamy Pythona, obiecujemy wrócić do tematu i zaprezentować prosty trick, zapobiegający "znikaniu ekranu". Na dziś radzimy uruchamiać pliki poprzez IDLa. Biorąc pod uwagę, że (póki co) pisać będziemy raczej krótkie skrypty "treningowe", ten sposób ich uruchamiania będzie najbardziej wygodny.
Sprawdzamy jak działa nasz plik
Czas uruchomić napisany przez nas skrypt, zapisany w pliku Exercise01.py.
Znajdź ten plik na swoim komputerze, wybierz go pojedynczym kliknięciem myszy, następnie kliknij prawym przyciskiem i wybierz "Edit with IDLE". Nasz plik zostanie otwarty jak do edycji
Teraz wybierz Run → Run Module
Plik zostaje uruchomiony. Wykonane zostaje pierwsze polecenie, czyli polecenie wyświetlenia na ekranie zdania: "Podaj swoje imię".
Wpisz dowolne imię i naciśnij Enter. Nic specjalnego się nie wydarzy, ponieważ – póki co – nie wskazaliśmy Pythonowi, jak ma zareagować na wpisanie imienia przez użytkownika. Możesz jednak być pewnym, że Python zapamiętał wpisane przez Ciebie imię[2]. To już zawsze jakiś mały sukces, prawda?
W kolejnym poście rozbudujemy nasz skrypt i pokusimy się o troszeczkę dłuższą konwersację naszego programu z użytkownikiem.
Podsumowanie
W tym odcinku napisaliśmy nasz pierwszy skrypt zapisany w pliku Pythona. Plik może zostać w dowolnym czasie uruchomiony przez użytkownika. Skrypt, zawarty w tym pliku prowadził będzie wymianę informacji z użytkownikiem, pisząc do użytkownika komunikaty (polecenie print) i odczytując udzielane przez użytkownika odpowiedzi (polecenie input).
Od tej pory będziemy pisać i zachowywać nasz kod właśnie w plikach Pythona, zaś shell (powłoka) pełnić będzie jedynie pomocniczą rolę.
Dodatek
W tym dodatku spróbujemy nieco głębiej spojrzeć na polecenie input(). A zatem będziemy musieli posłużyć się nieco bardziej technicznym (specjalistycznym) słownictwem.
To co w potocznym języku nazywamy poleceniem, de facto jest funkcją w Pythonie.
Na dokładniejsze poznanie funkcji przyjdzie czas później. Na razie zapamiętajmy tylko tyle, że input() jest jedną z wbudowanych (to znaczy gotowych do użycia) funkcji Pythona.
Po wywołaniu funkcji input() na ekranie ukazuje się kursor oczekiwania na wprowadzenie ciągu znaków. Innymi słowy: gdy funkcja input() jest wykonywana, przepływ programu zatrzymuje się, dopóki użytkownik nie wprowadzi określonej wartości.
Kolejne ważne spostrzeżenie: każdy język programowania ma ściśle zdefiniowane typy danych, jakie program napisany w tym języku może zaakceptować. Nie inaczej jest w Pythonie. Przykładowe typy danych w Pythonie to:
- strings – czyli ciąg (łańcuch) znaków; prosty typ tekstowy; jest to po prostu sekwencja znaków Unicode,
- typy liczbowe (numeric) – jest ich trzy, w tym m.in. typ int (skrót od słowa integer), reprezentujący liczby całkowite,
- typ logiczny (boolean) – Prawda / Fałsz.
Dane, które użytkownik wprowadza "z klawiatury" nie mogą trafić bezpośrednio do programu, gdyż najpierw musi być im nadany typ akceptowalny przez Pythona.
Odnośnie danych wprowadzanych z zewnątrz, twórcy Pythona zadecydowali, że język ten akceptował będzie dane w formacie strings (format łańcucha znaków).
Z tego względu funkcja input() wykonuje trzy czynności:
- czyta dane wprowadzone z klawiatury,
- konwertuje je do postaci stringu (łańcucha),
- zwraca do programu.
Co to oznacza w praktyce?
Gdy wprowadzisz z klawiatury dwa znaki, np. 12, Python odczyta je jako łańcuch znaków, a nie liczbę. Znaki to po prostu znaki, symbole, nie mają one dla Pythona wartości w sensie liczbowym. Aby się przekonać, wykonaj w shellu Pythona proste ćwiczenie, napisz dwa łańcuchy znaków połączone plusem i naciśnij Enter, np. '12'+'3'
Warto w tym miejscu napomknąć, że zwracanie wartości przez funkcje (returning value) to jeden z intensywniej eksplorowanych tematów w rozmaitych poradnikach i samouczkach dotyczących Pythona. Bez wątpienia jeszcze nie raz się z nim zetkniemy.
Zapewne czytając, iż funkcja input() zwraca do programu wartość w postaci łańcucha znaków, zadajesz sobie pytanie: no ale chwileczkę, przecież nie zawsze jest to sytuacja pożądana. A jeśli chcemy aby użytkownik podał nam liczbę? Co wówczas?
Gdy pytamy użytkownika o imię, odpowiedź w formie tekstu jest jak najbardziej OK. Jednak gdy zapytamy go (przykładowo) o wiek, udzielona odpowiedź powinna być rozpoznana jako liczba.
Python rozwiązuje to w prosty sposób. Rekomendowane jest posłużenie się funkcją int(), która przekształca łańcuch znaków w liczbę. Aby osiągnąć zamierzony efekt, opakuj funkcję input() funkcją int(), czyli napisz:
int(input())
[1] Przy okazji: warto oswoić się ze słowem "syntaks", gdyż ucząc się Pythona usłyszysz je zapewne jeszcze z milion razy.
[2] po uruchomieniu skryptu, dane wprowadzane przez użytkownika zapamiętywane są krótkotrwale, to znaczy jedynie do momentu zamknięcia tego skryptu; w późniejszej fazie nauki poznamy sposoby trwałego zapamiętywania danych w Pythonie.