class: center, middle, inverse # Вступ до Python ## Python 101 .footnote[ ###Богдан Кулинич ] --- class: middle ## Мета курсу - Навчитися писати і читати код на Python - Навчитися використовувати готові рішення - Вміти створювати веб-апки - Зрозуміти процес розробки - Навчитися думати, як програміст --- layout: true .left-column[ ## Про Python ] --- .right-column[ - **Проста та створена, щоб легко читатися** ```python print("Python is simple and easy to learn") ``` - **Вільне та відкрите програмне забезпечення** FLOSS (Free/Libré and Open Source Software) - **Велика кількість бібліотек на будь-який випадок** 54412 пакети на PyPI - **Привітна і активна спільнота** 36 щорічних конференцій PyCon по всьому світу. 400К питань та Stackoverflow - **Працює всюди** GNU/Linux, Windows, FreeBSD, Macintosh, Iphone, Ipad, Android і ще 17 інших платформ ] --- .right-column[ В термінах мов програмування: - Високорівнева - Інтерпретована - Об’єктно-орієнтована - Легко розширювати та взаємодіяти з іншими мовами (C/C++) ] --- .right-column[ Де використовується Python: - **Веб-розробка** Instagram, Disqus, Pinterset, last.fm - **Адміністрування серверів, дата-центрів, хмар** Openstack - **Аналіз даних і Big Data, фінансове програмування** - **Наукове програмування** - **Програмна генерація музики, зображень, відео** ] --- layout: false background-image: url(../lhc.jpg) background-size: cover ## CERN --- layout: true ## Встановлення Python --- ### 2 vs. 3 - Python 2.7.x - Python 3.4.x Програми на Python 3 не сумісні з Python 2 і навпаки --- ### Термінал В Ubuntu запускається Ctrl+Alt+T --- ### Debian / Ubuntu Встановлення стандартного інтерпретатора Python 3 та інтерактивного інтерпретатора IPython 3: ```bash sudo apt-get install python3 ipython3 ``` Запуск: ```bash ipython3 ``` Результат: ```bash Python 3.4.0 (default, Apr 11 2014, 13:05:11) Type "copyright", "credits" or "license" for more... In [1]: ``` --- layout: false class: inverse, middle, center ## Основи Python --- layout: true ## Основи --- - Літерали ```python 42, 2.71828, 'Python' ``` - Основні типи чисел — цілі (`int`) та дробові (`float`) ```python 2, 42 # int 3.14159, 2e-10 # float ``` - Логічний тип ```python True, False ``` - Рядки ```python 'Single quotes', "Double quotes" """Multi line string """ ``` --- - Функції і оператори ```python max(2, 4) # 4 len("Python") # 6 2 + 2 # 4 "A" + "B" # 'AB' print("Hello") # Hello ``` - Вийнятки (Exceptions) ```python len(3) ``` Упс. ```python TypeError: object of type 'int' has no len() ``` --- - Змінна — назва для об’єкту ```python a = 2 b = a + 2 # 4 ``` - Типи даних ```python type(1) # int type(3.14) # float type('Hello') # str type(len) # builtin_function_or_method type(a) # int ``` --- layout: false class: middle, center, inverse ## Hello, world! --- layout: true ## Програми на Python --- ### Текстовий редактор - **Sublime Text 3** [sublimetext.com/3](http://sublimetext.com/3) - **Atom** [atom.io](http://atom.io) - **Gedit** --- ```python # hello.py print('Hello, world!') ``` --- ### Hello, terminal... Навігація в Unix-терміналі: - `pwd` – показати поточний шлях - `cd [шлях]` – перейти в папку - `ls -l` – показати писок файлів і папок в поточній папці - `mkdir [назва папки]` – створити папку Виконання програми з термінала: ```bash python3 hello.py ``` --- layout: false class: center, middle ## Структури даних --- layout:true ## Списки --- Впорядковані колекції об’єктів ```python chapters = ['intro', 'how it happened', 'drama', 'the end'] ``` --- ```python a = [1, 3, 5] b = [7, 8, 9] len(b) # 3 b.append(11) # [7, 8, 9, 11] len(b) # 4 a + b # [1, 3, 5, 7, 8, 9, 11] a[0] # 1 a[1] # 3 a[-1] # 5 a[0:2] # [1, 3] a[:2] # [1, 3] a[5] # IndexError ``` --- layout: true ## Словники --- Невпорядковані пари ключ-значення ```python course_levels = {'python': 'beginner', 'ios': 'advanced'} ``` --- ```python ranks = {'python': 4, 'C++': 5} len(ranks) # 2 ranks['python'] # 4 ranks['ruby'] = 5 # {'python': 4, 'C++': 5, 'ruby': 5} ranks['java'] # KeyError ``` --- layout: false ## Модель пам’яті ```python a = [1, 2, 3] b = a a[0] = 0 print(b) # [0, 2, 3] ``` --- layout: false class: center, middle ## Керування програмою --- layout: true ## Логіка --- **Якщо** [умова 1], то треба зробити [дію A]. **Інакше якщо** [умова 2], то треба зробити [дію B] **Інакше**, треба зробити [дію C] --- ```python if condition1: do_action_a() elif condition2: do_action_b() else: do_action_c() ``` .footnote[Відступи (whitespace) важливі! 4 пробіли або таб] --- ### Порівняння ```python a = 1 b = 1 a == b # True a != b # False a is b # False a is not b # True a < b # False b = 0 a > b # True 'y' in 'Python' # True ``` --- ### Логічні вирази ```python good = True bad = False good and bad # False good or bad # True not good # False not good or bad and bad # False nothing = None nothing is None # True nothing is not None # False ``` --- layout: false class: inverse, center, middle ## Вправи На [Codecademy](http://codecademy.com/courses/python-beginner-en-kSQwt/0/1) --- layout: true ## Цикли --- ### while **Поки** [умова] виконується, роби [дії] --- ### while ```python while condition1: do_action_A() do_action_B() do_action_C() # ... ``` --- ### while ```python number = 42 done = False while not done: ····guess = int(raw_input('Enter a guess')) ····if guess == number: ········done = True ····elif guess < number: ········print('Number is greater') ····else: ········print('Number is smaller') else: ····print('Guessed!') ``` --- ### for **Для кожного** об’єкта з набору [набір об’єктів], виконати [дії]. --- ### for ```python for item in items_collections: do_action_1() do_action_2() do_action_3() # ... ``` --- ### for ```python letters = ['a', 'b', 'c', 'd'] for letter in letters: print(letter) digits = range(10) for i in digits: print(i) ``` --- ### break, continue Переривання циклів ```python while True: command = raw_input('$ ') if command == 'exit': break elif command == '': print('Command is empty!') continue print('Command was', command) ``` --- ### Fizzbuzz Напишіть програму, яка виводить числа від 1 до 100, але для чисел, які діляться - на 3, виводить 'Fizz' - на 5, виводить 'Buzz' - і на 3 і на 5, виводить 'FizzBuzz' > Most good programmers should be able to write out on paper a program which does this in a under a couple of minutes. Want to know something scary? The majority of comp sci graduates can't. Jeff Atwood, [codinghorror.com](http://codinghorror.com) --- layout: false class: inverse, center, middle ## Вправи На [Codecademy](http://www.codecademy.com/courses/python-beginner-en-kSQwt/1/1) ---