Koło Studentów Informatyki Uniwersytetu Wrocławskiego



Podobne dokumenty
Przegląd języka Python. Łukasz Anwajler

Kurs rozszerzony języka Python

Python wstęp do programowania dla użytkowników WCSS

Zaawansowany kurs języka Python

Python dla początkujących. Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Python! Lekcja 1 podstawy języka, typy danych

Listy, krotki, słowniki, funkcje

Język Python. Język Python 1/35

Microsoft IT Academy kurs programowania

Komunikacja Człowiek-Komputer

Wstęp do Pythona. Janusz Szwabiński. Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Podstawy. Jan Koprowski Politechnika Gdańska, FTiMS Informatyka Stosowana

Python. Wprowadzenie. Jolanta Bachan

Wykład nr 1 Język Ruby i framework Rails

Programowanie obiektowe

Redis, skrypty w języku Lua

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Podstawy programowania skrót z wykładów:

Wstęp do programowania

Wprowadzenie do Objective-C

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Język Python (2) Język Python (2) 1/36

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Wprowadzenie do języka Java

KOTLIN. Język programowania dla Androida

SWIFT. Zaawansowane Programowanie Obiektowe

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie obiektowe

Języki i metody programowania

Programowanie w Ruby

Środowisko programisty

Wstęp do programowania

Wstęp do informatyki. Python 1

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

1 Atrybuty i metody klasowe

Wykresy i interfejsy użytkownika

Programista samouk : profesjonalny przewodnik do samodzielnej nauki kodowania / Cory Althoff. Gliwice, copyright Spis treści

Metody numeryczne. Artur Wymysłowski, prof. PWr. Wrocław

Podstawy programowania w Pythonie

Java Język programowania

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie obiektowe

Wstęp do programowania

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Paradygmaty programowania

Podstawy programowania w Pythonie

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Podstawy programowania w Pythonie

1 Podstawy c++ w pigułce.

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie obiektowe

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Programowanie obiektowe

Programowanie robota mobilnego E-puck w języku Python

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

2. Składnia Pythona. Robert Janczewski. Gdańsk, 2014

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Programowanie w Internecie. Java

Python wstęp. Michał Bereta

Podstawy programowania obiektowego

Kurs rozszerzony języka Python


Java EE produkcja oprogramowania

Java jako język programowania

Wstęp do programowania

Podstawy programowania w Pythonie

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Programowanie obiektowe i C++ dla matematyków

Język C++ Różnice między C a C++

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Programowanie Obiektowe i C++

PARADYGMATY PROGRAMOWANIA Wykład 3

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Języki i techniki programowania Ćwiczenia 2

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Spis treści. Wprowadzenie 15

Kurs rozszerzony języka Python

Transkrypt:

Koło Studentów Informatyki Uniwersytetu Wrocławskiego

Python programming is fun again! Piotr Wasilewski wasilewski.piotrek (at) gmail.com Akademickie Stowarzyszenie Informatyczne

Plan wykładu Wstęp Język Zastosowanie Przykłady (na żywo) Zakończenie 3

Wstęp

Czym jest Python Interpretowany język programowania (możliwa kompilacja do binarki) Wieloplatformowy: Linux/UNIX Windows Mac OS Symbian... 5

Co go wyróżnia Cechy: dynamiczne typowanie automatyczne zarządzanie pamięcią (garbage collector) bloki kodu tworzone poprzez wcięcia (czytelność kodu!) kod jest czytelny i intuicyjny, dzięki czemu Python jest łatwy w nauce 6

Oblicza Pythona CPython standard, czyli po prostu Python Jython implementacja w Javie IronPython -.NET (Mono) PyPy Python w Pythonie ChinesePython ;)... 7

Historia Python został stworzony pod koniec lat 80-tych przez Guido van Rossuma Wersje stabilne na dzień dzisiejszy to 3.1.2 i 2.6.5 8

Ale... skąd ta nazwa?! Monty Python :) 9

Jak zacząć? Instalacja www.python.org/download/ repozytoria Edytor tekstu/ide VIM oczywiście ;) Gedit, Notatnik, EMACS, Eclipse, IDLE, Do dzieła! 10

Hello, World! W sesji interaktywnej: $ python >>> print Hello, World! Hello, World! W pliku: #!/usr/bin/env python print Hello, World! 11

Jak działa Python plik.py plik.pyc PVM Kod źródłowy Bajtkod Wirtualna maszyna 12

Język

Typy wbudowane string int, long, bool float complex listy (list) krotki (tuple) słowniki (dict) zbiory (set) pliki (file) None 14

Zmienna jak utworzyć s = mielonka na obiad i = 4 x = 26.654 l = [3, 6, 8, 9] t = ('a', 'b', 'c') d = {2: silly, 5: walks } 15

Łańcuchy znaków typ string 'ala ma kota' tekst\n\tsformatowany r'surowy lancuch znakow' u unicode ąśćź, wielolinijkowy tekst str(14) # '14' 16

Łańcuchy znaków - operacje len( tekst ) # 5 konkatenacja + r' ' + u stringów a = tekst a[1] # 'e' a.upper() # 'TEKST' a.replace('t','_') # '_eks_' b = ala.ma.kota b.split('.') # ['ala', 'ma', 'kota'] 17

Łańcuchy znaków - wycinki s = hiszpanska inkwizycja s[2:7] s[:7] s[11:] s[:] s[:: 1] s[::3] # 'szpan' # 'hiszpan' # 'inkwizycja' # 'hiszpanska inkwizycja' # 'ajcyziwkni aksnapzsih' # 'hznanic' 18

Łańcuchy znaków formatowanie tekstu wynik: %f % 6.9 # 'wynik: 6.9' %s %f % ( spam, 69) # 'spam 69' x = 5 print liczba = %i % x 19

Liczby całkowite typy int, long i bool x = 5 y = 3 x + y # 8 x * 2 # 10 y ** 3 # 27 int('123') # 123 bool(69) # True bool(0) # False 20

Liczby zmiennoprzecinkowe typ float f = 3.14 f / 2 # 1.57 Precyzja zależy od systemu (najczęściej podwójna precyzja) 21

Liczby zespolone typ complex x = 3j + 4 y = 8j x + y # 4+11j x * 2 # 8+6j 22

Listy typ list l = ['spam', 69, 4+5j] #dowolny typ l.append(4) #['spam', 69, 4+5j, 4] l.pop() #ucina ostatni element i zwraca jego wartość l[1] # 69 l[:2] # ['spam', 69] Listy mogą zawierać obiekty dowolnego typu Można je dowolnie zagnieżdżać 23

Krotki typ tuple t = ('parrot', 123, 'spam') t[1:] # (123, 'spam') Krotki są obiektami stałymi (nie do końca, ale o tym później...) Tak samo jak listy, mogą zawierać obiekty dowolnego typu Tak samo można też krotki zagnieżdżać 24

Słowniki typ dict d = {3:'spam', 'parrot':'ni'} d.keys() d.values() d['nowy'] = 1 d.pop(3) # [3, 'parrot'] # ['spam', 'ni'] # {3:'spam','nowy':1,'parrot':'ni'} # usuwa parę klucz-wartość dla podanego klucza i zwraca wartość 25

Zbiory typ set A = set([1, 44, 5, 13]) B = set([1, 32, 5, 13, 6]) A.intersection(B) # set([1, 5, 13]) A.union(B) # set([32, 1, 5, 6, 44, 13]) 26

Pliki typ file f = open('spam.txt', 'r') f.read() # odczytuje cały plik f.readline() # odczytuje kolejną linię f.write('tekst') # dopisuje do pliku 'tekst' Możliwa jest praca w trybie binarnym 27

Dynamiczne typowanie Nie istnieją zmienne jako takie operujemy na referencjach do obiektów w pamięci Zmieniają się referencje a nie wartości Przypisanie tworzy referencję do obiektu Jeżeli do obiektu nie odnoszą się żadne referencje, jest on usuwany (garbage colletor) 28

Dynamiczne typowanie x = 'spam' y = 13 x 'spam' y 13 29

Dynamiczne typowanie x = y x 'spam' y 13 30

Klasyfikacja typów Typy zmienne (modyfikowalne w miejscu): listy słowniki Typy niezmienne: liczby łańcuchy znaków krotki 31

Klasyfikacja typów Tylko obiekty zmienne możemy modyfikować, zachowując je pod tym samym adresem (referencje są nadal aktualne!) Chcąc zmienić obiekt typu niezmiennego, musimy przypisać mu nową wartość, np. x = mielonka x = smaczna + x # rozszerzamy łańcuch 32

Klasyfikacja typów Uwaga! Jeżeli w sekwencji umieścimy obiekt typu zmiennego, to modyfikując ten obiekt, modyfikujemy również sekwencję (pośrednio) l = [1,2] t = (l, 7) # t = ([1, 2], 7) l.append('x') # teraz t = ([1, 2, 'x'], 7) 33

Dynamiczne typowanie x = [1, 2, 3] y = x x [1, 2, 3] y 34

Dynamiczne typowanie Uwaga! x.append(4) x [1, 2, 3, 4] y 35

Instrukcja warunkowa Struktura: if warunek: instrukcje elif warunek2: instrukcje (...) else: instrukcje 36

Instrukcja warunkowa Warunek jest wyrażeniem a nie instrukcją! (czyli np. nie może zawierać przypisania) Pisząc warunek staramy się nie używać nawiasów chodzi o czytelność kodu Instrukcja kończy się dwukropkiem! 37

Parę słów o strukturze kodu Bloki kodu wydzielamy robiąc wcięcia Głębokość wcięć nie ma znaczenia, ale musimy być konsekwentni Nie musimy używać średników (ale możemy) Chcąc stworzyć pusty blok stosujemy pass (wbrew pozorom to przydatne) 38

Pętla while Struktura: while warunek: instrukcje else: instrukcje Instrukcje: break oraz continue Blok else jest wykonywany, jeżeli pętli nie zakończyła instrukcja break 39

Pętla for Struktura: for element in sekwencja: instrukcje else: instrukcje Pętla for wykorzystuje iterację do przejścia po elementach danej sekwencji Blok else działa tak samo jak w pętli while 40

Listy składane Składnia: x = [wyrazenie for elem in sekw] Tworzy nową listę, wykonując wyrażenie dla każdego elementu z sekwencji lista = [1, 2, 3] y = [x**2 for x in lista] # y = [1, 4, 9] 41

Programowanie funkcyjne - lambda Funkcja anonimowa lambda: lambda argumenty: wyrazenie Lambda zwraca wartość wyrażenia operującego na podanych argumentach lambda x: (x + 1) ** 2 # zwraca x zwiększone o 1 i podniesione do kwadratu 42

Programowanie funkcyjne - narzędzia Map - stosuje podaną funkcję do zadanej sekwencji, tworząc nową sekwencję Filter odfiltrowuje elementy sekwencji wg. Wyniku podanej funkcji Reduce oblicza wartość z sekwencji 43

Funkcje Struktura: def nazwa(argumenty): instrukcje Wartość zwracana poprzez instrukcję return Zarówno typ zwracanej wartości, jak i argumentów nie jest ustalony! Możliwe jest przyjmowanie/zwracanie nieokreślonej liczby argumentów/wartości 44

Klasy - podstawy Struktura: class nazwa(klasy_nadrzedne): atrybuty i metody W nawiasach podajemy listę klas po których nasza klasa ma dziedziczyć Instancję tworzymy poprzez inst=klasa() Dostęp do atrybutów/metod poprzez klasa.atrybut lub klasa.metoda 45

Klasy - podstawy Konstruktor tworzymy pisząc metodę init Destruktor to metoda del Operatory przeciążamy pisząc metody o odpowiednich nazwach (np. getitem, add, cmp,...) 46

Moduły - importowanie Moduły to pliki zawierające obiekty gotowe do użycia (zmienne, funkcje, klasy) Importując moduł uzyskujemy dostęp do jego zawartości Podczas importowania moduł jest wykonywany! import modul from modul import obiekt reload(modul) 47

Moduły tworzenie własnych modułów Modułem jest każdy plik z kodem źródłowym Pythona i rozszerzeniem.py Należy pamiętać, że podczas importowania kod modułu jest wykonywany ( ) if name ==' main ': instrukcje 48

Pakiety i inne rozszerzenia Pakiet to katalog, w którym znajdują się moduły oraz specjalny plik init.py wykonywany podczas importowania pakietu Pakiety importujemy tak samo jak moduły Aplikacje w Pythonie mogą również wykorzystywać rozszerzenia napisane w C 49

Komentarze i dokumentacja Komentarze jednolinijkowe zaczynamy znakiem # Dokumentację do kodu tworzymy pisząc pod nagłówkami funkcji/klas/modułów łańcuchy znaków def func(): Komentarz do funkcji pass Komentarze można odczytać np. funkcją help help(func) Istnieją narzędzia automatycznie tworzące pliki dokumentacji (np. w HTML-u) 50

Do zgłębienia Zakresy: zasada LEGB, zakresy w klasach, modułach, pakietach itd. Projektowanie zorientowane obiektowo: enkapsulacja, dziedziczenie, Klasy w nowym stylu Wyjątki definiowanie i wykorzystanie 51

Zastosowanie

Biblioteka standardowa Około 200 modułów System operacyjny, wyrażenia regularne, programowanie sieciowe, GUI, czas, bazy danych i wiele, wiele innych 53

Pozostałe biblioteki Python Package Index (PyPI) to zbiór ogromnej ilości bibliotek stale przybywają nowe! Bindingi w Pythonie dla niemal każdego większego projektu (Qt, GTK, MySQL, ) NumPy, SciPy obliczenia naukowe Django, Zope aplikacje webowe 54

Kto używa Pythona Nokia: Qt, Symbian Google: GMail, Groups, Maps, YouTube Autodesk: Maya NASA Gry: Battlefield, Civilization, ;) Philips Yahoo! 55

Do poczytania Python. Wprowadzenie, Mark Lutz Python. Od podstaw Zanurkuj w Pythonie, Mark Pilgrim dokumentacja na python.org Python Enhancement Proposals (PEPs) 56

Przykłady

Zakończenie

Programming is fun again! 59

Pytania? Śmiało! :) 60

Dziękuję za uwagę!

NOBODY expects the Spanish Inquisition!