Podstawy 1
Plan prezentacji Garść informacji Komentarze Stringi Wbudowane typy liczbowe Konstrukcja print Pobieranie danych Konstrukcja if Konstrukcja if else Konstrukcja if elif else Pętla while Pętla while else Sekwencyjne typy danych Zmienne Pętla for else instrukcje: continue, break i pass Działania Operatory porównań Pętla for Systemy liczbowe Stringi Krotki Listy Słowniki Zbiory For dla sekwencyjnych typów danych Odczyt pliku na przykładzie funkcji for Funkcje Klasy Wyjątki Importowanie modułów 2
Paradygmaty Python wspiera opiera się na trzech paradygmatach Strukturalnym Obiektowym Funkcjonalnym 3
Prosta i czytelna składnia Elegancja kodu przez wymuszenie stosowania wcięć def factorial(value): if value == 0: return 1 else: return value * factorial(value - 1) 4
Dostępne tryby Batch mode python moj_program.py Interactive mode $ python >>> 2 + 2 4 >>> 'Ala ma kota' 'Ala ma kota' >>> quit() $ 5
Komentarze # Do końca linii 6
Stringi String jednolinijkowy z użyciem apostrofów 'Jednolinijkowy' String jednolinijkowy z użyciem cudzysłowia Jednolinjkowy String wielolinijkowy Wielo- -linijkowy 7
Wbudowane typy liczbowe Liczby całkowite int -13, 7776 konwersja: int(liczba) Duże liczby całkowite long 99999999999999999L, -777777777777777l konwersja: long(liczba) Liczby zmiennoprzecinkowe float 12.3, 0.5 konwersja: float(liczba) Liczby zespolone complex 3 + 2j konwersja: complex(liczba) 8
Systemy liczbowe Ósemkowy poprzedzamy 0 07776, 017140 konwersja: oct(0x7776), oct(7776) Dziesiętny domyślny przykład: 7776, 10000 konwersja: int(07776), int(0x7776) Hexadecymalny poprzedzamy 0x przykład: 0x7776, 0x1e60 konwersja: hex(07776), hex(7776) 9
Wbudowana działania języka + dodawanie - odejmowanie * mnożenie / dzielenie % reszta z dzielenia (modulo) ** podnoszenie do potęgi // podłoga z dzielenia 10
Zmienne Automatycznie określany typ liczba = 76 ocena = 5.5 wydzial = 'FtiMS' 11
Wypisywanie wyników print Napis # Napis\n print 'Jan' + 'Kowalski' # JanKowalski\n print 'Jan' Kowalski # JanKowalski\n print ocena # 5.5\n print liczba # 76\n print wydzial # FTiMS\n print # \n 12
Wypisywanie wyników print Wydzial: + wydzial + \n \ + Ocena: + str(ocena) + \n \ + Album: + str(liczba) + \n Wydzial: FtiMS Ocena 5.5 Album: 76 13
Pobieranie danych Jako tekst: liczba = raw_input('podaj liczbę: ') Jako liczbę: liczba = input('podaj liczbę: ') 14
Operatory porównań Operator mniejszości Operator równości 1 < 2 # True 7 == 7.0 # True Operator większości Operator nierówności 77 > 66 # True 6!= 7 # True Mniejsze lub równe Operator identyczność 17 <= 17 # True 7 is 7.0 # False Większe lub równe Operator zaprzeczenia 37 >= 36 # True not False # True 15
Struktura if if liczba == 2: print Nie zdałeś! 16
Struktura if - else if liczba == 2: print Nie zdałeś! else: print Zdałeś! 17
Struktura if elif - else if liczba == 2: print Nie zdałeś! elif liczba < 0: print Mniej niż zeroooo, mniej niż zeroooo! else: print Zdałeś! 18
Struktura if elif - else W warunkach możemy używać not zaprzeczenie (negacja) if not czy_zalogowany: and iloczyn logiczny (koniunkcja) if zalogowany and admin: or suma logiczna (alternatywa) if moderator or administrator: 19
Struktura switch 20
Klauzula else Klauzula else występuje w niemalże każdej instrukcji blokowej wspieranej przez Pythona. Między innymi w: if, for, while, try Wykonuje się ona gdy warunek jest, po raz pierwszy, nie spełniony 21
Pętla while i=0 0 while i < 10: 2 print i i = i +1 1 3 4 5 6 7 8 9 22
Pętla while - else i=0 0 while i < 10: 2 print i i = i +1 else: print 'else' 1 3 4 5 6 7 8 9 else http://docs.python.org/reference/compound_stmts.html#the-while-statement 23
Pętla for Generowanie zakresu range (start, stop, krok) xrange (start, stop, krok) # oszczędność pamięci! krok domyślnie 1 http://docs.python.org/library/functions.html#range http://docs.python.org/library/functions.html#xrange 24
Pętla for for i in range(0, 10): print i 0 1 2 3 4 5 6 7 8 9 25
Pętla for - else for i in range(0, 10): print i else: print 'else' 0 1 2 3 4 5 6 7 8 9 else http://docs.python.org/reference/compound_stmts.html#the-for-statement 26
continue i break, pass Przeskocz do następnego cyklu pętli continue Przerwij aktualnie wykonywaną pętlę break Instrukcja pusta pass 27
Typy sekwencyjne Stringi Krotki Listy Słowniki Zbiory 28
Stringi napis = Napisy na murach kłamią len(napis) napis[1] napis[7] napis[-1] napis[10:16] napis[10:-1] 24 a n ą murach murach kłamią http://docs.python.org/tutorial/introduction.html#strings 29
Krotki - niezmienne krotka = (1, 'dwa', 3.3) len(krotka) 3 krotka[1] dwa krotka[-1] 3.3 krotka[0:1] (1,) krotka[0:-1] (1, 'dwa') http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences 30
Listy - zmienne lista = [1, 'dwa', 3.3] len[lista] 3 lista[1] dwa lista[-1] 3.3 lista[0:1] [1,] lista[0:-1] [1, 'dwa'] 31
Listy - zmienne lista = [1, 'dwa', 3.3] lista[0] = 'jeden' ['jeden', 'dwa', 3.3] lista[1:3] = [2, 'trzy'] ['jeden', 2, 'trzy'] del(lista[0]) [2,'trzy'] lista[2] = 5 [2,'trzy', 5] http://docs.python.org/tutorial/introduction.html#lists 32
Słowniki - zmienne slownik = {'imie': Kubuś, 'wiek': 1.5} len(slownik) 2 slownik['imie'] Kubuś slownik['wiek'] 1.5 slownik['pierwsze_slowo'] = 'Mama' {'imie': Kubuś, ''pierwsze_slowo': 'Mama', 'wiek': 1.5 } del(slownik['wiek']) {'imie': Kubuś, 'pierwsze_slowo': 'Mama'} slownik['roczek'] = 'drugi' {'imie': Kubuś, 'pierwsze_slowo': 'Mama', 'roczek': ;drugi'} http://docs.python.org/tutorial/datastructures.html#dictionaries 33
Zbiory schronisko1 = set(['kot', 'pies', 'krowa', 'kura']) schronisko2 = frozenset(['kot', 'pies', 'szop', 'pluszowy miś']) len(schronisko2) 4 schronisko1 & schronisko2 set(['kot', 'pies']) schronisko1 schronisko2 set(['szop', 'pies', 'kura', 'krowa', 'pluszowy miś', 'kot']) schronisko1 schronisko2 set(['krowa, 'kura']) schronisko1 ^ schronisko 2 set(['szop', 'kura, 'krowa', 'pluszowy miś']) schronisko1 >= set(['kot', 'pies']) True schronisko2 <= set(['kot', 'pies']) False 'krowa' in schronisko2 False http://docs.python.org/tutorial/datastructures.html#sets 34
Pętla for - napisy napis = Napisy na murach kłamią N a a for litera in napis: print litera p i s y n a m u r a c h k ł a m i ą 35
Pętla for - krotki krotka = (1, 'dwa', 3.3) 1 for element in krotka: 'dwa' print element 3.3 36
Pętla for - krotki krotka = (1, 'dwa', 3.3) 0: 1 for nr, element in enumerate(krotka): 1: dwa print str(nr) + ': ' + str(element) 2: 3.3 37
Pętla for - listy lista = [1, 'dwa', 3.3] 1 for element in lista: 'dwa' print element 3.3 38
Pętla for - listy lista = [1, 'dwa', 3.3] 0: 1 for nr, element in enumerate(lista): 1: dwa print str(nr) + ': ' + str(element) 2: 3.3 39
Pętla for - słowniki slownik = {'imie': Kubuś, 'wiek': 1.5} imie: Kubuś for klucz, wartosc in slownik: wiek: 1.5 print str(klucz) + ': ' + str(wartosc) 40
Pętla for - słowniki slownik = {'imie': Kubuś, 'wiek': 1.5} imie: Kubuś for klucz, wartosc in slownik: wiek: 1.5 print str(klucz) + ': ' + str(wartosc) kopie dostęp do elementów keys() iterkeys() values() itervalues() items() iteritems() 41
Pętla for - słowniki slownik = {'imie': Kubuś, 'wiek': 1.5} imie: Kubuś for klucz, wartosc in slownik: wiek: 1.5 print str(klucz) + ': ' + str(wartosc) 42
Pętla for - słowniki slownik = {'imie': Kubuś, 'wiek': 1.5} imie: Kubuś for klucz, wartosc in slownik.iteritems(): wiek: 1.5 print str(klucz) + ': ' + str(wartosc) 43
Pętla for - zbiory schronisko = set(['krowa', 'kot', 'kura', 'pies']) for zwierzak in schronisko: print zwierzak krowa kot kura pies 44
Pętla for pliki plik = open('./loremipsum.txt', 'r') for linijka in plik: print linijka Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc rutrum nunc congue mi. Sed rhoncus felis at augue. Praesent ultrices vestibulum libero. Ut quis lectus. Fusce in sapien. Etiam quis enim. Proin scelerisque tincidunt orci. Quisque molestie condimentum arcu. Vivamus odio. Etiam eu enim. http://docs.python.org/tutorial/datastructures.html#looping-techniques 45
Definiowanie funkcji Funkcji używamy z użyciem słowa kluczowego def def szescian(x): return x*x*x szescian(2) # 8 szescian(3) # 27 szescian(10) # 1000 szescian(777) # 469097433 http://docs.python.org/tutorial/controlflow.html#defining-functions 46
Definiowanie klasy Klasę definiujemy z użyciem słowa class Każda klasa dziedziczy po object class MojaKlasa(object): pass http://docs.python.org/tutorial/controlflow.html#defining-functions 47
Pola klasy Domyślnie wszystkie pola klas są publiczne class Student(object): pass studentka1 = Student() studentka1.imie = 'Małgorzata' studentka1.nazwisko = 'Noybauer' 48
Pola klasy Pola klasy definiujemy w konstruktorze metodzie init () class Student(object): def init (self): self.imie = '' studentka1 = Student() studentka1.imie = 'Małgorzata' studentka1.nazwisko = 'Noybauer' 49
Metody klas Każda metoda jako pierwszy parametr przyjmuje obiekt, do którego należy - self class Student(object): def inicjaly(self): return self.imie[0] +. + self.nazwisko[0] +. stud = Student() stud.imie = 'Ruzia' stud.nazwisko = 'Kowalska' print stud.inicjaly() R.K. 50
Wyjątki Błędy w języku komunikowane są przez zgłaszane wyjątki. Tak na przykład gdy próbujemy wyświetlić coś co nie istnieje slownik = {'novum': 'aula'} try: print slownik['nowy'] except KeyError: print 'Error. Klucz nowy nie istnieje' return -1 51
Importowanie z innych bibliotek Do ładowania innych bibliotek służy słowo kluczowe import. Po zaimportowaniu modułu wszystkie funkcje zawarte są w przestrzeni nazw o tej samej nazwie. import math math.sqrt(4) math.log10(1000) math.sin(math.pi) http://docs.python.org/tutorial/modules.html#importing-from-a-package 52