Привіт, світ!
Прикладна аналітика при розробці IT
КНУ імені Тараса Шевченка, ФІТ
Як долучитися?
Примітка
Клас буде активний з 11 жовтня 2023 року до 11 квітня 2023 року, після чого буде буде відкрито наступний потік. Слідкуйте за оновленнями.
cmd
pip install numpy
pip install pandas
pip install jupyter
jupyter-notebook
Порада
Рекомендую використовувати Сhocolatey: https://aranaur.rbind.io/blog/2023/01
sudo apt update
, що оновить всі пакети.sudo apt install software-properties-common
, що дозволить керувати дистрибутивами.sudo add-apt-repository ppa:deadsnakes/ppa
, що додасть deadsnakes-репозиторій з пакетами Python різних версій.sudo apt install python3.9-dev
, що встановить розширений Python 3.9.sudo apt install curl
- консольна утиліта для роботи з URL-адресами.curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
- завантажити і встановити pip.sudo apt install python3.9-venv
- встановити віртуальне середовище Python 3.9.sudo python3.9 get-pip.py
- встановити pip.pip install numpy
pip install pandas
pip install jupyter
python3.9 -m notebook
brew install python@3.9
python3.9 -m pip install numpy
python3.9 -m pip install pandas
python3.9 -m pip install jupyter
jupyter-notebook
У програмуванні така дія називається побічним ефектом (анг. side effects). Він може бути візуальним, звуковим, виконувати запису файл або базу даних тощо.
Баг - це помилка у програмі. Вони можуть приймати найрізноманітніші форми і наша задача навчитися виправляти їх.
Привіт, Гаррі
Привіт, Гаррі
Змінна - це просто контейнер для якогось значення всередині комп’ютера або всередині вашої програми.
При виборі імені змінної давайте дотримуватись певних правил, щоб наш код виконувався без помилок та його було зручно читати:
Для створення змінних використовується оператор присвоєння =
.
Привіт, name
Привіт,
Гаррі
Коментарі - це примітки до вашого коду. Вони не виконуються і не впливають на роботу програми.
Для створення коментарів використовується символ #
.
А що якщо необхідно написати коментар, який займе декілька рядків? В такому випадку можна використати спеціальну техніку використовуючи потрійні лапки (одинарні або подвійні):
Псевдокод - це неформальна форма запису. Це просто використання природної мови, щоб висловити свої думки лаконічно, методично, алгоритмічно тощо.
Псевдокод - це гарний спосіб структурувати список справ, особливо якщо ви поки не знаєте, як писати код.
Давайте у середині функції print()
“додамо” змінну name
.
Привіт,Гаррі
Позбавимось естетичної помилки, додавши пробіл між словами:
Привіт, Гаррі
Передамо декілька агрументів:
Привіт, Гаррі
Весь цей час ми працювали з рядками - str
, послідовність тексту.
Давайте повернемося до одного з попередніх варіантів написання програми з подвійним використанням функції print()
:
Привіт,
Гаррі
Чи можна вирішити “проблему” іншим способом? Так:
print(*objects, sep=' ', end='\n', file=None, flush=False)
Примітка
Документація до Python доступна на docs.python.org.
Варіант 1:
Привіт, Гаррі
Варіант 2:
Привіт, Гаррі
f-рядки - це рядки, які містять обчислювальні вирази.
Щоб створити f-рядок, ми використовуємо літеру f
перед першими лапками або апострофом.
Вирази, які ми хочемо обчислити, ми пишемо в фігурних дужках {}
:
Привіт, Гаррі
Раніше використовувались такі способи:
%
:My name is Гаррі and I am 11 years old
format
:Моє ім'я Гаррі. Мені 11 років.
Моє ім'я 11. Мені Гаррі років.
Методи - це функції, які виконуються на об’єкті.
Привіт, гаррі
Як бачите, ім’я виводиться з пробілами на початку і в кінці. Якщо ми хочемо видалити пробіли з початку і кінця рядка, ми можемо використати метод .strip()
:
Привіт, гаррі
Вже краще, але що робити з ім’ям, яке введене з маленької літери? Ми можемо використати метод .capitalize()
, щоб перетворити першу літеру рядка на велику:
Привіт, Гаррі
Тепер розглянемо приклад, коли користувач вводить не тільки ім’я, але і прізвище:
Привіт, Гаррі поттер
Метод .capitalize()
перетворює першу літеру рядка на велику. Але якщо нам необхідно записати і ім’я, і прізвище з великої літери? Ми можемо використати метод .title()
:
Привіт, Гаррі Поттер
З іншої сторони, якщо ми хочемо вивести тільки ім’я, а користувач ввів ім’я та прізвище, ми можемо використати метод .split()
. Цього разу я не буду додавати зайвих пробілів до імені:
Привіт, Гаррі
Часто для форматування тексту необхідно використовувати спеціальні символи або екрановані послідовності:
Ось деякі з найбільш використовуваних:
\n
— перенесення рядка\t
- табуляція\'
- одинарна лапка\"
- подвійна лапка\\
— зворотний слешРозберемо їх використання відразу на прикладі:
'Ґрифіндор' - чемпіон з квідичу!
1996 – 1997
Кам'яні стіни, як і в «Ґрінґотсі», освітлювали смолоскипи
Кам'яні стіни, як і в «Ґрінґотсі», освітлювали смолоскипи
Примітка
Документація до методів рядків у Python доступна за посиланням.
Рядки належать до незмінних об’єктів у Python. Які практичні наслідки виникають з того факту, що рядки, на відміну від списків, є незмінними об’єктами?
Щоб показати, що рядки є незмінюваними об’єктами, ми можемо використати такий приклад коду:
Якщо ми хочемо створити новий рядок на основі існуючого, то ми повинні створити новий об’єкт рядка:
Цілі числа, int
(англ. integer) - це окремий тип даних у Python.
Операції з числами:
+
: додавання-
: віднімання*
: множення**
: зведення в ступінь/
: ділення//
: цілочислове ділення, арифметична операція, результатом якої є ціла частина частки, отриманого поділом одного цілого числа на інше ціле число%
: залишок від діленняДавайте подивимось, чи зможемо ми створити власний маленький калькулятор:
# Запитати користувача про перше число
first_number = input('Введіть перше число: ') # '1'
# Запитати користувача про друге число
second_number = input('Введіть друге число: ') # '2'
# Вивести результат додавання
print(f'Результат додавання: {first_number} + {second_number} = {first_number + second_number}')
Результат додавання: 1 + 2 = 12
😕
Функція input()
завжди повертає рядок. Щоб вирішити цю проблему, нам потрібно перетворити рядок у ціле число. Для цього ми можемо використати функцію int()
:
# Запитати користувача про перше число
first_number = int(input('Введіть перше число: ')) # '1'
# Запитати користувача про друге число
second_number = int(input('Введіть друге число: ')) # '2'
# Вивести результат додавання
print(f'Результат додавання: {first_number} + {second_number} = {first_number + second_number}')
Результат додавання: 1 + 2 = 3
Взагалі то ми можемо написати весь наш калькулятор у одному рядку:
Результат додавання: 3
Однак далеко не завжди перетворення типів проходить без помилок, наприклад, ми не зможемо зробити таке перетворення:
ValueError: invalid literal for int() with base 10: 'my number is 42'
Це означає, що рядок 'my number is 42'
не може бути відразу представлена як ціле число. Ми могли б взяти з цього рядка лише число 42
і перевести його до цілого числа. Скоро ми навчимося так робити.
Примітка
Якщо ви хочете дізнатися більше про цілі числа, то можете прочитати документацію.
Python також підтримує числа з плаваючою комою (англ. floating point numbers). Це числа, які мають дробову частину. Наприклад, 3.14
- число з плаваючою комою.
Щоб використати число з плаваючою комою, ми можемо використати float()
:
# Запитати користувача про перше число
first_number = float(input('Введіть перше число: ')) # '1.2'
# Запитати користувача про друге число
second_number = float(input('Введіть друге число: ')) # '3.4'
# Вивести результат додавання
print(f'Результат додавання: {first_number} + {second_number} = {first_number + second_number}')
Результат додавання: 1.2 + 3.4 = 4.6
Примітка
Якщо ви хочете дізнатися більше про числа з плаваючою комою, то можете прочитати документацію.
Для округлення чисел з плаваючою комою ми можемо використати функцію round()
:
round(number, ndigits=None)
number
- число, яке ми хочемо округлитиndigits
- кількість знаків після коми, до якої ми хочемо округлити число. Якщо ми не вказуємо цей аргумент, то число буде округлено до найближчого цілого.# Запитати користувача про перше число
first_number = float(input('Введіть перше число: ')) # '1.2'
# Запитати користувача про друге число
second_number = float(input('Введіть друге число: ')) # '3.4'
# Вивести результат додавання
print(f'Результат додавання: {first_number} + {second_number} = {round(first_number + second_number)}')
Результат додавання: 1.2 + 3.4 = 5
Давайте додамо 1 до 999:
# Запитати користувача про перше число
first_number = float(input('Введіть перше число: ')) # '1'
# Запитати користувача про друге число
second_number = float(input('Введіть друге число: ')) # '999'
# Вивести результат додавання
print(f'Результат додавання: {first_number} + {second_number} = {round(first_number + second_number)}')
Результат додавання: 1 + 999 = 1000
Все ок, але в різних частинах світу використовують різне форматування чисел для зручності читання:
# Запитати користувача про перше число
first_number = float(input('Введіть перше число: ')) # '1'
# Запитати користувача про друге число
second_number = float(input('Введіть друге число: ')) # '999'
# Вивести результат додавання
print(f'Результат додавання: {first_number} + {second_number} = {first_number + second_number:,}')
Результат додавання: 1 + 999 = 1,000
Для округлення, замість round()
можна використати спеціальну нотацію {:.2f}
:
# Запитати користувача про перше число
first_number = float(input('Введіть перше число: ')) # '2'
# Запитати користувача про друге число
second_number = float(input('Введіть друге число: ')) # '3'
# Вивести результат ділення
print(f'Результат ділення: {first_number} / {second_number} = {first_number / second_number:.2f}')
Результат ділення: 2 / 3 = 0.67
def
Для створення власних функцій ми використовуємо ключове слово def
:
Привіт, Гаррі
Важливо
Зверніть увагу на відступи в нашому коді. Відступ дорівнює 4 пробілам або одного табулятора. В Python відступи дуже важливі, тому що вони вказують на те, що код належить до певного блоку.
Іноді нам потрібно задати значення за замовчуванням для аргументів функції.
Наприклад, якщо ми хочемо вивести привітання, але не знаємо імені користувача, то ми можемо використати значення за замовчуванням:
main()
Ми можемо зануритися глибше і назвати свою функцію main()
.
Це не обов’язкова вимога, але це певна конвенція у світі програмування. Це означає, що це головна функція, яка виконується, коли ми запускаємо нашу програму. Давайте спробуємо це зробити:
Привіт, Гаррі
Викликаючи головну функцію main()
таким чином, це позбавляє нас від проблем з порядком записів у коді. Таким чином, ми можемо організувати свій код і впорядкувати його.
Змінні, які ви визначаєте всередині функції, не будуть доступні за межами цієї функції:
NameError: name 'name' is not defined