Menu Zamknij

Porównaj styl pisarzy część 3 – Funkcje, argumenty i zmienne

W poprzedniej części pracowałeś w terminalu IDLE. Nadszedł czas, by napisać, zapisać i uruchomić swój pierwszy program. Uruchom IDLE w swój ulubiony sposób, lub zgodnie z instrukcją. Z górnego menu wybierz zakładkę „File” i kliknij „New File”, albo po prostu wciśnij na klawiaturze kombinację klawiszy „ctrl+n”. Pojawi się nowe okno zatytułowane „untitled”. To właśnie w tym oknie zaczniesz pisać nowy program. Pamiętasz co działo się po wpisaniu w terminal IDLE zmiennej tekstowej i użyciu funkcji type():

>>> "zmienna tekstowa"
'zmienna tekstowa'
>>> type("zmienna tekstowa")
<class 'str'>
>>> 

Wpiszmy ten sam kod w okno programu:

"Zmienna tekstowa"
type("Zmienna tekstowa")

Z menu wybierz Run, albo po prostu wciśnij F5. Program poprosi o zapisanie pliku, nadaj mu nazwę i zapisz. Program się uruchomi, ale efekt będzie zupełnie inny niż oczekiwałeś:

>>> 
=================== RESTART: F:/python38/zmienna tekstowa.py ===================
>>> 

Nie ma żadnego wyniku, nie ma też żadnego błędu. Co tu się stało? Programy działają nieco inaczej, niż wpisywanie komend prosto w terminal IDLE. Dla uproszczenia przyjmij, że terminal IDLE potwierdza twoje akcje, a program już nie. Program zrobił dokładnie to, co kazałeś mu zrobić. W 1 linijce przyjął do wiadomości, że wprowadziłeś tekst a w 2 linijce przyjął do wiadomości, że chcesz poznać typ danych dla stringu Zmienna tekstowa. Nigdzie nie napisałeś, że chcesz zobaczyć co program zrobił. Naprawmy to!

Funkcja, która pozwoli ci wyświetlić co napisałeś jest funkcją print(). Jak sama nazwa wskazuje, funkcja wydrukuje na ekranie to, co podasz jako argument funkcji, czyli wstawisz w jej nawiasy. Na początku przetestujmy ją w okienku terminala IDLE.

>>> "Zmienna tekstowa"
'Zmienna tekstowa'
>>> type("zmienna tekstowa")
<class 'str'>
>>> print("Zmienna tekstowa")
Zmienna tekstowa
>>> print(type("Zmienna tekstowa"))
<class 'str'>
>>> 

W pierwszej linijce terminal wyświetlił tekst w pojedynczych cudzysłowach, potwierdzając, że jest to typ tekstowy. Funkcja print() drukuje tekst bez cudzysłowu, takie zleciłeś jej zadanie, wydrukuj argument. W przypadku funkcji type() nie ma zmian, tutaj dostajemy tylko informację o typie danych. Popatrz też na drugi przykład, tutaj argumentem funkcji print() jest funkcja type(). Zapisem jak w przykładzie print(type()) wydajesz polecenie, że chcesz wydrukować (print()) jakim typem danych jest „Zmienna tekstowa” (type("Zmienna tekstowa")).

Poprawmy nasz program. Jego zadaniem jest wydrukowanie w terminalu efektu poleceń. Pamiętaj by nawiasów otwierających było tyle samo co zamykających.

print("Zmienna tekstowa")
print(type("Zmienna tekstowa"))

Uruchom program. Teraz efekt jest taki na jaki liczyłeś:

=================== RESTART: F:\python38\zmienna tekstowa.py ===================
Zmienna tekstowa
<class 'str'>
>>> 

W przykładowym tekście pojawia się ciągle słowo zmienna. Co to jest zmienna i do czego służy? Napisz kolejny przykład programu:

print("To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia.")
print(type("To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia."))
print(len("To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia."))

I jego efekt:

To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia.
<class 'str'>
70
>>> 

Strasznie dużo pisania, prawda? Trzy razy wpisujesz aż 70 znaków i czytelność tych 3 funkcji jest taka sobie. Dlatego lepiej korzystać ze zmiennych. Zmienne mogą przyjąć dowolną wartość, np. liczbę całkowitą, tekst, liczbę zmiennoprzecinkową itd. Pamiętasz błąd terminala jaki pojawił się po wpisaniu w niego tekst?

>>> tekst
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    tekst
NameError: name 'tekst' is not defined

IDLE wskazuje na błąd:
NameError: name 'tekst' is not defined
NameError: to błąd, który informuje, że chcesz użyć niezdefiniowanej zmiennej, albo zrobiłeś literówkę, np. pisząc prnt("Zmienna tekstowa") otrzymasz taki sam błąd.

Wartość do zmiennej przypisujesz poprzez użycie znaku „=”. Sprawdźmy przypisywanie wartości do zmiennych i wywoływanie zmiennych w terminalu IDLE:

>>> tekst = "To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia."
>>> print(tekst)
To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia.
>>> print(type(tekst))
<class 'str'>
>>> print(len(tekst))
70
>>> 

O wiele lepiej, czytelniej i krócej prawda? Najpierw do zmiennej nazwanej „tekst” przypisujemy zdanie. Potem już używamy tylko nazwy zmiennej, do wydrukowania jej zawartości, do sprawdzenia jakiego typu jest zmienna i do pokazania ile znaków ta zmienna ma. Zauważ, że zmienna jest podawana bez cudzysłowu, jeśli umieścisz ją „” to efektem będzie operacja na stringu a nie na zmiennej:

>>> print("tekst")
tekst
>>> 

Teraz umieśćmy całą naszą wiedzę nie w terminalu, a w nowym programie. Zapisz i uruchom go:

tekst = "To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia."

print(tekst)
print(type(tekst))
print(len(tekst))

W 1 linijce pod zmienną tekst przypisujesz string. W linijkach 3-5 drukujesz wynik działania trzech funkcji. Efekt uruchomienia jest dokładnie taki, na jaki liczyłeś:

======================== RESTART: F:\python38\zmienna tekstowa.py =======================
To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia.
<class 'str'>
70
>>> 

Podsumowanie

Funkcje, argumenty, zmienne to trzy słowa, które będą się przewijać bardzo często, niezależnie od języka programowania. Pamiętaj, że funkcja w nawiasie może przyjmować argumenty, argumentami funkcji mogą być inne funkcje, a zmienne trzeba zadeklarować przed ich użyciem. Zadeklarować to, np. zrobić to co zrobiliśmy w przykładzie, do zmiennej przypisano ciąg znaków, string:
tekst = "To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia."

Zmiennej nie można nazwać w dowolny sposób, musisz pamiętać o kilku zasadach:

  • Pierwszym znakiem nazwy zmiennej musi być litera lub „_”
  • Nazwa zmiennej nie może się zaczynać od cyfry
  • Nazwa może zawierać tylko: litery (bez polskich znaków), cyfry (0-9) i znak podkreślenia („_”)
  • Dla zmiennych wielkość liter ma znaczenie, „Tekst” i „tekst” to dwie, różne zmienne


Na tym kończę trzeci wpis. Pozostaje zadanie domowe!

Zadanie domowe

Podążanie za instrukcjami, nawet jeśli je wszystkie wykonujesz samodzielnie, nie zrobi z ciebie programisty. Zadania domowe mogą wydawać się na początku trudne. Tu nie ma rozwiązania podanego na talerzu, użyj dowolnych źródeł, by znaleźć odpowiedź.

  1. Zmienne tekstowe można do siebie dodawać. Zdefiniuj dwie zmienne, do pierwszej przypisz słowo „Wlazł”, do drugiej przypisz słowo „kotek”. Teraz zdefiniuj trzecią zmienną, która będzie sumą dwóch wcześniejszych. Użyj funkcji print() by wydrukować 3 zmienną.
  2. Zmienne tekstowe można też mnożyć, za pomocą pojedynczej funkcji print() wydrukuj dowolną zmienną tekstową 10 razy.

5 3 votes
Ocena artykułu

0 komentarzy
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
0
Chcesz podzielić się komentarzem?x