Wprowadzenie do programowania w Pythonie
Python to język skryptowy, jest łatwy w nauce jak i zarazem jest popularny i używany w profesjonalnych projektach. Python posiada bogatą bibliotekę standardową umożliwiającą wykonanie wielu czynności.
Niniejszy artykuł stanowi wstęp do Pythona. Omawia podstawowe elementy tego języka. Jeżeli Cię to zainteresuje możesz kontynuować naukę wykorzystując liczne pełne poradniki dostępne w sieci.
Powiązane artykuły:
- Python - co to jest i do czego można go użyć?
- Instalacja Pythona pod Linuksem
- Instalacja i konfiguracja Pythona pod MS Windows
- Instalacja Pythona na macOS
Pełne kursy Pythona:
- Zanurkuj w Pythonie - publiczna książka na wikibooks
- Wprowadzenie do Pythona - kurs od Django Girls
Uruchamianie skryptów Pythona
Przez skrypt rozumiemy plik tekstowy o rozszerzeniu .py. By go wykonać wydajemy polecenie:
Można też wykonać (kliknąć) na plik .py
bezpośrednio (jeżeli jest wykonywalny). Jeżeli wykonujemy skrypty Pythona bezpośrednio na Linuksie to pliki te muszą mieć atrybut wykonywalności (chmod 755 nazwa_pliku.py)
Witaj świecie
Zapisz podany kod jako skrypt1.py i uruchom go jedną z opisanych wcześniej metod:print('Witaj w swiecie Pythona')
print("Jeszcze jeden raz")
Powinieneś zobaczyć dwa wiersze z tekstem ze skryptu. Ten kod prezentuje napisy (łańcuchy). W Pythonie napisy zamykane są poprzez pojedynczy lub podwójny cudzysłów. Zastosowane polecenie print służy w Pythonie do wyświetlania tekstu (w konsoli)
Oto kolejny skrypt:
hello = 'Witaj w swiecie Pythona'
print(hello[0])
print(hello[0:5])
Gdy go wykonamy zobaczymy w pierwszym wierszu "W" a w drugim "Witaj". W skrypcie tym przypisaliśmy napis "Witaj w swiecie Pythona" do zmiennej hello
a następnie skorzystaliśmy z operatora indeksowania by wyświetlić określony fragment napisu. Operator indeksowania ma postać: nazwa_zmiennej[od:do] gdzie od:do oznacza numery porządkowe w napisie (od którego wyświetlać / do którego wyświetlać).
Jeżeli podamy tylko jedną liczbę to zostanie wyświetlony znak z pozycji o podanym numerze. Dozwolone są też inne kombinacje:
hello = 'Witaj w swiecie Pythona'
print(hello[:5])
print(hello[6:])
Pierwszy przykład wyświelone zostaną znaki od pierwszego do piątego włącznie. W drugim od siódmego do ostatniego. Zwróć uwagę na to że indeks numerowany jest od zera - :5 oznacza odcięcie na szóstym elemencie a 6: rozpoczęcie od siódmego w numeracji od jedynki.
Napisy można łączyć za pomocą formatowania:
hello = 'Witaj'
world = 'w swiecie Pythona'
print(f'{hello} {world}')
print('%s %s' % (hello, world))
Litera f
przed napisem oznacza go do formatowania, dzięki czemu można wewnątrz niego w nawiasach klamrowych umieszczać zmienne. W efekcie uzyskamy napis Witaj w świecie Pythona
. Drugi przykład dotyczy starszych wersji Pythona, w których formatowanie nie jest dostępne. Jeżeli po napisie umieścimy znak % to informujemy interpreter że ten napis ma zmienne do podstawienia. W obecnych wersjach Pythona 3 zaleca się wyłącznie stosowanie pierwszego sposobu.
Liczby
Operacje matematyczne są proste i intuicyjne. Oto przykład:
a = 2
b = 5
print(a + b)
print(a * b)
print(a / b)
print(a % b)
Znak % oznacza dzielenie modulo - zwróci resztę z dzielenia. Wynik będzie następujący:
7 10 0 2
Dzielenie zwróciło wynik zero. Dlaczego? Gdyż operujemy na liczbach całkowitych (integer, int). Liczby zmiennoprzecinkowe zapisalibyśmy w Pythonie tak:
a = 2.0 b = 5.0
Przez co otrzymalibyśmy wynik:
7.0 10.0 0.4 2.0
Instrukcje Warunkowe
Do wykonywania testów "jeżeli" służy składnia:
b = 2
a = 1
if a > b:
print(b)
else:
print(a)
c = 2
if a > b and a > c:
print('a większe od b i większe od c')
elif c == b:
print('C i B równe')
else:
print('żaden z warunków')
1i
C i B równe. Struktura składni ma postać:
if warunek: instrukcje else: instrukcje
Należy zwrócić uwagę na wcięcia - są one obowiązkowe! Struktura blokowa jest elementem składni Pythona (w C/C++ czy np. PHP odpowiednikiem są nawiasy klamrowe). Jako warunki podajemy zdarzenia zwracające wartości prawda/fałsz, np.:
!= - nie jest równe
< > - mniejsze, większe niż
Należy pamiętać że a = b to przypisanie (do zmiennej a przypisaliśmy wartość zmiennej b), natomiast a == b to porównanie.
Listy i tuple
Listy i tuple są sekwencjami, zbiorami różnych obiektów. W innych językach nazywane tablicami. Oto przykład:
imiona = ["zbychu", "rychu", "zdzisiu"]
print(imiona)
imiona[1] = "Pafnucy"
print(imiona[1])
print(len(imiona))
imiona.append("Hermenegilda")
print(imiona)
Na początku tworzymy listę imiona
. By wyświetlić obiekt z danej pozycji korzystamy z opisanego wcześniej operatora indeksowania. Przypisanie imiona[1] = "Pafnucy" zmienia wartość drugiego (numeracja elementów rozpoczyna się od zera) elementu listy. Funkcja len zwraca ilość elementów listy. Oprócz tego listy i tuple (krotki) mają sporo innych opcji, o których powiemy później. Mogą one zawierać również np. liczby czy inne listy/tuple.
Tuple różnią się tym od list że nie można zmieniać wartości elementów tupli po jej utworzeniu. Tuplę tworzymy tak:
Na listach działają te same operatory indeksowania co dla napisów. Zwracane są wtedy konkretne elementy lub fragmenty listy.
Metody list
- list(s) - konwertuje sekwencję s na listę
- s.append(x) - dodaje nowy element x na końcu s
- s.extend(t) - dodaje nową listę t na końcu s
- s.count(x) - zlicza wystąpienie x w s
- s.index(x) - zwraca najmniejszy indeks i, gdzie s[i] == x
- s.pop(i) - zwraca i-ty element i usuwa go z listy. Jeżli nie podamy parametru to usunięty zostanie ostatni element
- s.remove(x) - odnajduje x i usuwa go z listy s
- s.reverse() - odwraca w miejscu kolejność elementów s
- s.sort(funkcja) - Sortuje w miejscu elementy.
funkcja
to funkcja porównawcza
Metody napisów
- s.capitalize() - zmienia pierwszą literę na dużą
- s.center(długość) - Centruje napis w polu o podanej długości
- s.count(sub) - zlicza wystąpienie podciągu sub w napisie s
- s.isalnum() - sprawdza czy wszystkie znaki są znakami alfanumerycznymi
- s.isdigit() - sprawdza czy wszystkie znaki są cyframi
- s.islower() - sprawdza czy wszystkie litery są małe
- s.isspace() - sprawdza czy wszystkie znaki są białymi znakami
- s.isupper() - sprawdza czy wszystkie litery są duże
- s.join(t) - łączy wszystkie napisy na liście t używając s jako separatora
l = ['a', 'b', 'c']
s = '.'
print(s.join(l))
- s.lstrip() - usuwa początkowe białe znaki
- s.replace(old, new) - zastępuje stary podciąg nowym
- s.rstrip() - usuwa końcowe białe znaki
- s.split(separator) - dzieli napis używają podanego separatora
- s.strip() - usuwa początkowe i końcowe białe znaki
Pętle
W Pythonie mamy też kilka rodzajów pętli. Pierwsza z nich to while:
licznik = 10
wartosc = 15
while licznik <= wartosc:
licznik += 1
print("Jestem w while.")
Po wykonaniu kodu zobaczymy sześć Jestem w while.
. Pętla ta ma postać ogólną:
while WARUNEK: ZDARZENIA_DLA_PĘTLI
Kolejna pętla wygląda następująco:
for liczba in range(10):
print(liczba)
print("Petla 2:")
for liczba in range(3, 5):
print(liczba)
print("Petla 3:")
for liczba in range(10, 100, 10):
print(liczba)
Funkcja range tworzy listę wartości całkowitych od zera do podanej wartości (jeżeli podamy 1 argument) lub od - do (jeżeli podamy 2 argumenty). Możemy podać też trzeci parametr określający przyrost (normalnie +1). For może też iterować inne typy danych, np napisy, listy:
napis = "Zdrabniamy literki"
for litera in napis:
print(litera)
wazywa = ["pomidor", "rabarbar", "kalafior"]
for wazywo in wazywa:
print(wazywo)
Słowniki
Słownik to w innych językach takich jak PHP tablica asocjacyjna (haszująca) zawierająca obiekty poindeksowane za pomocą kluczy.
osoba = {"imie" : "Arthas", "nazwisko" : "Menethil"}
osoba['alias'] = "Król Liszów"
print(osoba["imie"])
for klucz, wartosc in osoba.items():
print(klucz, wartosc)
nazwa = { "klucz" : "wartość", "klucz" : "wartość" }
Słowniki podobne są do list, by wyświetlić określony wpis wystarczy podać jego klucz - nazwa_słownika["nazwa_klucza"]. Jako że klucze nie są liczbowym indeksem można nadawać im konkretne nazwy i przechowywać bardziej uporządkowane dane.
Funkcje
Funkcję definiujemy za pomocą instrukcji def. Oto przykład:
def nasza_funkcja(argument1, argument2):
return f'{argument1} + {argument2}'
print(nasza_funkcja("Poczatek", "Koniec"))
def nazwa_funkcji(parametry...): # kod funkcji return wynik
Klasy
Instrukcja class pozwala definiować klasy - podstawy w programowaniu obiektowym. Klasy to w uproszczeniu reprezentacja czegoś
- np. mając różne warzywa i owoce możemy mieć klasę Roślina
, która dziedziczyć będzie klasa Owoc
i Warzywo
. Każda klasa może mieć zbiór metod i właściwości. Dla przykładu klasa Roślina
może mieć metodę zwróć nazwę
, klasa Owoc
może mieć metodę lub właściwość zawartość cukru
.
Patrząc na klasę nieco inaczej - może to być niejako zbiór podobnych funkcji. Np. jeżeli chcemy pobierać i przesyłać pliki na stronę to możemy mieć klasę, która zawierać będzie metody wyślij
i pobierz
oraz szereg pomocniczych implementujących potrzebne czynności. Część kodu (np. zalogowanie się na stronie) będzie używana przez obie metody co pozwala unikać duplikowania kodu.
class Koszyk:
def __init__ (self):
self.koszyk = []
def dodaj(self, obiekt):
self.koszyk.append(obiekt)
def zwroc_koszyk(self):
return self.koszyk
@property
def rozmiar(self):
return len(self.koszyk)
zakupy = Koszyk()
zakupy.dodaj("pieczarki")
zakupy.dodaj("rukola")
print(zakupy.rozmiar)
print(zakupy.zwroc_koszyk())
Metody klasy definiowane są za pomocą def podobnie jak funkcje. Pierwszy argument każdej metody odnosi się do obiektu i zazwyczaj stosuje się nazwę self
. Dzięki tej zmiennej mamy dostęp do wszystkich metod, właściwości czy przypisanych atrybutów. Metoda __init__ to specjalna metoda, która jest wykonywana przy utworzeniu obiektu klasy. Może służyć do przekazania argumentów do klasy i przypisania ich do self
. Dość często są to dane potrzebne do użycia klasy (np. konfiguracja albo wymagane dane).
Programowanie obiektowe to dość duży temat i jeżeli Python Ciebie wciągnie to znajdziesz znacznie więcej na ten temat. Jest to dość ważny element programowania w Pythonie i poprawne myślenie obiektowe
stanowi klucz do pisania dobrego kodu i bycia dobrym programistą.
Pełny kurs Pythona
- Zanurkuj w Pythonie - publiczna książka na wikibooks
- Wprowadzenie do Pythona - kurs od Django Girls
Comment article