2. Zmienne, typy danych, rzutowanie - majsylw/Introduction-to-programming-in-python GitHub Wiki

Jeśli to Twój pierwszy kontakt z programowaniem, to możesz sobie wyobrazić, że zmienne to takie wydzielone miejsca w pamięci komputera, gdzie można przechowywać potrzebne dane. Python posiada kilka wbudowanych typów danych, takich jak liczby całkowite, rzeczywiste itp. Przy tworzeniu zmiennej nie musisz podawać jaki typ danych będziesz w niej przechowywać. Po prostu podajesz nazwę zmiennej i przypisujesz jej konkretną wartość. Z tego powodu mówi się, że python jest językiem typowanym dynamicznie. I o tym będzie dzisiejsza lekcja.

Zmienne

W naszych programach często będziemy obliczać jakieś wartości lub wpisywać je za pomocą klawiatury, czyli wczytywać od użytkownika. Jednak samo obliczenie wartości to nie wszystko. W pamięci komputera musimy wydzielić specjalne miejse, aby te wartości zapisać i następnie wielokrotnie wykorzystywać. Aby to zrobić utworzymy zmienną. Zmienną możesz sobie wyobrazić jak pewnego rodzaju pudełeczko z etykietką (nazwą). To właśnie za pomocą tej nazwy będziemy się odwoływać do zmiennej w trakcie pisania programu. Ważnym jest, żeby rozróżniać dwie rzeczy: nazwę zmiennej (etykietę pudełka) i jej wartość (wnętrze pudełka). Pamiętajmy, że zmienna, jak sama nazwa wskazuje, może zmieniać swoją wartość w czasie trwania programu.

# tworzymy zmienną o nazwie a i przechowujemy w niej wartość 7
a = 7
print(a)
## 7 <- to jest odpowiedź programu
# teraz wsadzimy do pudeleczka inna wartość
a = 8
print(a)
## 8 <- to jest nowa wartość zmiennej a

Styl nazewnictwa zmiennych.

To w jaki sposób będziemy nazywać nasze zmienne będzie wpływało na czytelność kodu a także nasze 'odnajdowanie się' w nim (np. czy łatwo będzie zmodyfikować kod w przyszłości, gdy zapomnimy, co dokładnie w nim napisaliśmy lub gdy ktoś inny będzie pracował na naszym kodzie). Dobrą praktyką jest nazywanie zmiennych zgodnie z ich przeznaczeniem, np. jeśli w zmiennej chcemy przechowywać nazwisko nazwijmy ją nazwisko, zgodnie z jej przeznaczeniem. Dodatkowo warto pamiętać o kilku pythonowych zasadach:

  • na nazwę zmiennej mogą składać się małe i wielkie litery od a do z, znak podkreślenia _, a także cyfry od 0 do 9, przy czym nazwa zmiennej nie może się od cyfry zaczynać (może za to od litery i znaku podkreślenia),
  • język python rozróżnia wielkość liter, co znaczy tyle, że litera A i a to nie jest dla niego to samo,
  • nie możemy w nazwie zmiennej używać białych znaków, zamiast tego przyjeło się korzystać z _ lub tak zwanej czcionki kamelowej czyli stosowania dużych liter np. wiek_studenta lub WiekStudenta - warto trzymać się jednej konwencji.

Typy danych

Każda zmienna, albo, mówiąc ogólniej, każda wartość w programie, ma swój typ. Możemy wyzczególnić liczby całkowite, zmiennoprzecinkowe, zespolone, napisy, czy też wartości logiczne. Jednak, jak już zostało wspomniane na początku tej lekcji, w języku Python występuje typowanie dynamiczne. Oznacza to, że konkretny identyfikator, konkretna zmienna, np. a, może raz przechowywać napis Ala a za chwilię liczbę całkowitą 4. Do sprawdzania typu danych służy funkcja type().

I tak najważniejszymi typami w języku Python są:

# bool lub boolean, wartość logiczna, tak/nie, prawda(True)/fałsz(False):
logiczna = True
print(type(logiczna))
## <class 'bool'>
# int lub integer, liczba całkowita
calkowita = -11
print(type(calkowita))
## <class 'int'>
# float, czyli zmienna zmiennoprzecinkowa/liczba rzeczywista - w Pythonie separatorem dziesiętnym jest .
zmiennoprzecinkowa = -9.4
print(type(zmiennoprzecinkowa))
## <class 'float'>
# complex, czyli liczba zespolona - w Pythonie jednostką urojoną jest j!
zespolona = -2.1+3.2j
print(type(zespolona))
## <class 'complex'>
# str lub string, czyli napis - napis poznajemy głównie po tym, że jest zapisany w cudzysłowie pojedynczym (') lub podwójnym ("):
napis = "ala ma kota"
print(type(napis))
## <class 'str'>

Konwersje między różnymi typami

Często zachodzi potrzeba zamiany typów, w szczególności z napisowego. Do tego służą funkcje, które nazywają się dokładnie tak, jak typy. Przyjrzyjmy się prostej konwersji z int na float:

print(float(5))
## 5.0 <- pojawiła się . a po niej 0

# Możemy też dokonać konwersji w drugą stronę:
print(int(5.0))
## 5 <- ucięta została część dziesietna
print(int(5.7))
## 5 <- tutaj także bez części dziesiętnej

A co z napisami (czyli zmiennymi zapisanymi w cudzysłowach)?

print(float("-5.3"))
## -5.3

# A także w drugą stronę:
napis = str(-5.3)
print(napis)
## -5.3
print(type(napis))
## <class 'str'>

UWAGA: wypisywanie napisu w środowisku IDLE występuje bez cudzysłowów, dlatego dla pewności sprawdzajcie typ!

Konwersji z napisu na liczbę będziemy dokonywać jeszcze korzystając z funkcji input(), już na kolejnych lekcjach.