## ++Тема 2++<br>Типи даних та змінні. Введення-виведення даних
(c) [Яценко Р.М.](https://www.ek.hneu.edu.ua/vykladachi/yatsenko-roman-mykolajovych/), 2019-2023
[ХНЕУ ім. С. Кузнеця](https://www.hneu.edu.ua/)
----
### Презентація

https://bit.ly/3yLjAnV
---
## 1. Введення і виведення даних
----
### Виведення даних
Для друку значень в Python є функція `print()`
Усередині круглих дужок через кому ми пишемо те, що хочемо вивести
----
### Приклад 1
```python=
print(5 + 10)
print(3 * 7, (17 - 2) * 8)
print(2 ** 16) # дві зірочки позначають зведення в ступінь
print(37 / 3) # один слеш - це ділення з відповіддю-дробом
print(37 // 3) # два слеша розраховують частка від ділення націло
# це як операція div в інших мовах
print(37 % 3) # відсоток розраховує залишок від ділення націло
# це як операція mod в інших мовах
```
----
### Виконання
<iframe frameborder="0" src="https://pythontutor.com/iframe-embed.html#code=print%285%20%2B%2010%29%0Aprint%283%20*%207,%20%2817%20-%202%29%20*%208%29%0Aprint%282%20**%2016%29%20%23%20%D0%B4%D0%B2%D1%96%20%D0%B7%D1%96%D1%80%D0%BE%D1%87%D0%BA%D0%B8%20%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D1%87%D0%B0%D1%8E%D1%82%D1%8C%20%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B2%20%D1%81%D1%82%D1%83%D0%BF%D1%96%D0%BD%D1%8C%0Aprint%2837%20/%203%29%20%20%23%20%D0%BE%D0%B4%D0%B8%D0%BD%20%D1%81%D0%BB%D0%B5%D1%88%20-%20%D1%86%D0%B5%20%D0%B4%D1%96%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B7%20%D0%B2%D1%96%D0%B4%D0%BF%D0%BE%D0%B2%D1%96%D0%B4%D0%B4%D1%8E-%D0%B4%D1%80%D0%BE%D0%B1%D0%BE%D0%BC%0Aprint%2837%20//%203%29%20%23%20%D0%B4%D0%B2%D0%B0%20%D1%81%D0%BB%D0%B5%D1%88%D0%B0%20%D1%80%D0%BE%D0%B7%D1%80%D0%B0%D1%85%D0%BE%D0%B2%D1%83%D1%8E%D1%82%D1%8C%20%D1%87%D0%B0%D1%81%D1%82%D0%BA%D0%B0%20%D0%B2%D1%96%D0%B4%20%D0%B4%D1%96%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%BD%D0%B0%D1%86%D1%96%D0%BB%D0%BE%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%D1%86%D0%B5%20%D1%8F%D0%BA%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D1%96%D1%8F%20div%20%D0%B2%20%D1%96%D0%BD%D1%88%D0%B8%D1%85%20%D0%BC%D0%BE%D0%B2%D0%B0%D1%85%0Aprint%2837%20%25%203%29%20%20%23%20%D0%B2%D1%96%D0%B4%D1%81%D0%BE%D1%82%D0%BE%D0%BA%20%D1%80%D0%BE%D0%B7%D1%80%D0%B0%D1%85%D0%BE%D0%B2%D1%83%D1%94%20%D0%B7%D0%B0%D0%BB%D0%B8%D1%88%D0%BE%D0%BA%20%D0%B2%D1%96%D0%B4%20%D0%B4%D1%96%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%BD%D0%B0%D1%86%D1%96%D0%BB%D0%BE%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%D1%86%D0%B5%20%D1%8F%D0%BA%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D1%96%D1%8F%20mod%20%D0%B2%20%D1%96%D0%BD%D1%88%D0%B8%D1%85%20%D0%BC%D0%BE%D0%B2%D0%B0%D1%85&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=nevernest&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 70vh;"> </iframe>
----
### Додаткові параметри `print`
- За замовчуванням функція `print()` приймає кілька аргументів, виводить їх через пробіл, після чого робить новий рядок
- Цю поведінку можна змінити, використовуючи іменовані параметри:
- `sep` (роздільник)
- `end` (закінчення)
----
### Роздільник рядків
Через параметр `sep` можна вказати відмінний від пробілу роздільник рядків:
```python=
print("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", sep="-")
print(1, 2, 3, sep="//")
print("a", "b", "c", sep="")
```
```
Mon-Tue-Wed-Thu-Fri-Sat-Sun
1//2//3
abc
```
----
### Кінець рядка
Параметр `end` дозволяє вказувати, що робити, після виведення рядка. За замовчуванням відбувається перехід на новий рядок. Однак цю дію можна скасувати, вказавши будь-який інший символ або рядок:
```python=
print(10, end="")
print('+', end="")
print(20, end="")
```
`10+20`
----
### Приклад 2
```python=
print(1, 2, 3)
print(4, 5, 6)
print(1, 2, 3, sep=', ', end='. ')
print(4, 5, 6, sep=', ', end='. \n')
print(1, 2, 3, sep='', end=' -- ')
print(4, 5, 6, sep=' * ', end='.')
```
```
1 2 3
4 5 6
1, 2, 3. 4, 5, 6.
123 -- 4 * 5 * 6.
```
----
### Форматовані рядки<br>(f-рядки)
```python
student = "Вася"
old = 18
grade = 90.2
print(f"Це {student}, {old} років. Його(її) оцінка: {grade:.2f}")
```
`Це Вася, 18 років. Його(її) оцінка: 90.20`
- У фігурних дужках може бути наведено змііну чи вираз для обрахунку
- Для дійсних чисел можна зазначити кількість знаків після коми
----
### Введення даннх
- Для введення даних в програму ми використовуємо функцію `input()`
- У дужках пишеться підказка для введення
- Функція `input()` зчитує один рядок, введений з клавіатури
----
### Приклад 3
```python=
print('Як вас звати?')
# зчитуємо рядок та зберігаємо його в змінну name
name = input()
print('Вітаю, ' + name + '!')
```
----
### Виконання
<iframe frameborder="0" src="https://pythontutor.com/iframe-embed.html#code=print%28'%D0%AF%D0%BA%20%D0%B2%D0%B0%D1%81%20%D0%B7%D0%B2%D0%B0%D1%82%D0%B8%3F'%29%0A%23%20%D0%B7%D1%87%D0%B8%D1%82%D1%83%D1%94%D0%BC%D0%BE%20%D1%80%D1%8F%D0%B4%D0%BE%D0%BA%20%D1%82%D0%B0%20%D0%B7%D0%B1%D0%B5%D1%80%D1%96%D0%B3%D0%B0%D1%94%D0%BC%D0%BE%20%D0%B9%D0%BE%D0%B3%D0%BE%20%D0%B2%20%D0%B7%D0%BC%D1%96%D0%BD%D0%BD%D1%83%20name%0Aname%20%3D%20input%28%29%20%20%0Aprint%28'%D0%92%D1%96%D1%82%D0%B0%D1%8E,%20'%20%2B%20name%20%2B%20'!'%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=nevernest&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 70vh;"> </iframe>
---
## 2. Типи даних
----
### Об'єкти даних
Вся інформація, що зберігається в пам'яті комп'ютера, складається з *об'єктів даних*, які мають форму чисел, символів і т.д.
Кожен такий об'єкт даних повинен бути позначений унікальним ім'ям -- *ідентифікатором* і належати до певного *типу даних*
----
### Константа
це об'єкт даних зі значенням, яке в ході виконання програми не змінюється
----
### Змінна
це об'єкт даних, що має фіксоване ім'я (ідентифікатор) і значення, яке може змінюватися в залежності від застосовуваних дій
----
### Створення констант і змінних
```python=
# Числові константи
LENGTH = 100
VES = 3.5
# Строкові константи
MACHINE = 'Хонда'
TV_SET = 'Samsung'
# Числові змінні
date = 13
month = 9
# Строкові змінні
message = 'День програміста'
comment = 'святкують на 256-й день року'
```
----
### Тип даних
Тип об'єкта визначає, які дії можна робити з об'єктами цього типу:
- можливі значення об'єктів даних (змінних і констант), що належать до даного типу
- внутрішню форму представлення об'єктів даних в пам'яті комп'ютера
- операції і функції, які можуть виконуватися над об'єктами даних, що належать до даного типу
----
### Основні типи даних в Python
- Цілі числа зберігаються в об'єктах типу `int`
4, 687, -45, 0
- Дробові числа (дійсні числа) - в об'єктах типу `float`
1.45, -3.789654, 0.00453
- Рядки зберігаються в об'єктах типу `str`
`"ball", "What is your name?", 'dkfjUUv', '6589'`
----
### Операції над цілими числами
Знак | Операція
:---:|:-------:
`+` | додавання
`-` | віднімання
`*` | множення
`**` | зведення в ступінь
`/` | ділення (дробовий результат)
`//` | ділення націло
`%` | залишок від ділення
----
### Приклад 4. Обчислення з цілими числами
```python=
print("18 - 4 + 2 =", 18 - 4 + 2)
print("6 * 3 =", 6 * 3)
print("19 / 4 =", 19 / 4)
print("107 // 4 =", 107 // 4)
print("107 % 4 =", 107 % 4)
```
```
18 - 4 + 2 = 16
6 * 3 = 18
19 / 4 = 4.75
107 // 4 = 26
107 % 4 = 3
```
----
### Приклад 5. Цифри тризначного числа
```python=
a = int(input('Введить число'))
one = a % 10
print('Цифра одиниць числа', one)
dec = (a // 10) % 10
print('Цифра десятків числа', dec)
hun = a // 100
print('Цифра сотень числа', hun)
rez = hun * 100 + dec * 10 + one
print('А це вихідне число', rez)
```
----
### Приклад 5. Виконання
<iframe frameborder="0" src="https://pythontutor.com/iframe-embed.html#code=a%20%3D%20int%28input%28'%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D1%8C%20%D1%87%D0%B8%D1%81%D0%BB%D0%BE'%29%29%20%0Aone%20%3D%20a%20%25%2010%0Aprint%28'%D0%A6%D0%B8%D1%84%D1%80%D0%B0%20%D0%BE%D0%B4%D0%B8%D0%BD%D0%B8%D1%86%D1%8C%20%D1%87%D0%B8%D1%81%D0%BB%D0%B0',%20one%29%0Adec%20%3D%20%28a%20//%2010%29%20%25%2010%0Aprint%28'%D0%A6%D0%B8%D1%84%D1%80%D0%B0%20%D0%B4%D0%B5%D1%81%D1%8F%D1%82%D0%BA%D1%96%D0%B2%20%D1%87%D0%B8%D1%81%D0%BB%D0%B0',%20dec%29%20%0Ahun%20%3D%20a%20//%20100%0Aprint%28'%D0%A6%D0%B8%D1%84%D1%80%D0%B0%20%D1%81%D0%BE%D1%82%D0%B5%D0%BD%D1%8C%20%D1%87%D0%B8%D1%81%D0%BB%D0%B0',%20hun%29%0Arez%20%3D%20hun%20*%20100%20%2B%20dec%20*%2010%20%2B%20one%0Aprint%28'%D0%90%20%D1%86%D0%B5%20%D0%B2%D0%B8%D1%85%D1%96%D0%B4%D0%BD%D0%B5%20%D1%87%D0%B8%D1%81%D0%BB%D0%BE',%20rez%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=nevernest&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 70vh;"> </iframe>
----
### Операції над дійсними числами (float)
Знак | Операція
:---:|:-------:
`+` | додавання
`-` | віднімання
`*` | множення
`**` | зведення в ступінь
`/` | ділення (дробовий результат)
----
### Приклад 6. Даремні факти
```python=
name = input("Вітаю. Як тебе звати? ")
age = int(input("Скільки тобі років? "))
weight = int(input("Скільки в тобі кілограмів? "))
seconds = age * 365 * 24 * 60 * 60
print("Твій нинішній вік – більше", seconds, "секунд.")
moon_weight = weight / 6
print("Чи знаєте Ви, що на Місяці ви б важили всього",
moon_weight, "кг?")
sun_weight = weight * 27.1
print("А ось, перебуваючи на Сонці, ви б важили", sun_weight,
" кг. \n(Але, на жаль, це тривало б недовго...)")
```
----
### Приклад 6. Результат
```
Вітаю. Як тебе звати? Катя
Скільки тобі років? 18
Скільки в тобі кілограмів? 55
Твій нинішній вік – більше 409968000 секунд.
Чи знаєте Ви, що на Місяці ви б важили всього 9.166666666666666 кг?
А ось, перебуваючи на Сонці, ви б важили 1490.5 кг.
(Але, на жаль, це тривало б недовго...)
```
---
## 3. Перетворення типів
----
### Навіщо це потрібно?
Часто виникає необхідність перейти від одного типу до іншого. Наприклад, `print` для виведення числа на екран спочатку перетворює його в текст
Бувають ситуації, коли потрібно поміняти тип без виведення інформації на екран або здійснити перетворення рядка в число
Ця операція називається *перетворенням типів*
----
### Приклад 7
```python=
a = input()
b = input()
s = a + b
print(s)
```
----
### Виконання
<iframe frameborder="0" src="https://pythontutor.com/iframe-embed.html#code=a%20%3D%20input%28%29%0Ab%20%3D%20input%28%29%0As%20%3D%20a%20%2B%20b%0Aprint%28s%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=false&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 70vh;"> </iframe>
----
### Приклад 8
```python=
a = int(input())
b = int(input())
s = a + b
print(s)
```
----
### Виконання
<iframe frameborder="0" src="https://pythontutor.com/iframe-embed.html#code=a%20%3D%20int%28input%28%29%29%0Ab%20%3D%20int%28input%28%29%29%0As%20%3D%20a%20%2B%20b%0Aprint%28s%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=false&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 70vh;"> </iframe>
----
### функції перетворення
- `float()` створює нове дійсне число з рядка або цілого числа
- `int()` створює нове ціле число з рядка або дійсного числа
- `str()` створює новий рядок з числа (або значення будь-якого іншого типу)
----
### Перетворення цілого числа в дійсне
```python=
a = 24
print(a)
b = float(a)
print(b)
```
```
24
24.0
```
----
### Перетворення дійсного числа в ціле
```python=
a = 24.7
print(a)
b = int(a)
print(b)
c = round(a)
print(c)
```
```
24.7
24
25
```
---
## 4. Складені оператори присвоювання
----
### Форма запису
`a = a * 5`
можна записати так
`a *= 5`
----
### Інкремент та декремент
Збільшення на одиницю (*інкремент*)
`x += 1`
Зменшення на одиницю (*декремент*)
`x -= 1`
----
### Таблиця складених операторів
Оператор | Зразок | Рівносильно
:-:|:-:|:-:
`+=` | `x += 5` | `x = x + 5`
`-=` | `x -= 5` | `x = x - 5`
`*=` | `x *= 5` | `x = x * 5`
`/=` | `x /= 5` | `x = x / 5`
`%=` | `x %= 5` | `x = x % 5`
----
### Множинне присвоювання
В Python можна за одну інструкцію присвоювання змінювати значення відразу декількох змінних
```python
a = 0
b = 1
# А можна в один рядок
a, b = 0, 1
```
----
### Приклад 9
Обмін значеннями двох змінних
```python=
a = 1
b = 2
a, b = b, a
print(a, b)
```
```
2 1
```
---
## 5. Математичні функції
----
### Функція abs
Функція `abs()` використовується для повернення абсолютного значення числа (модуль числа)
```python=
f = -54.26
print(abs(f))
```
```
54.26
```
----
### Бібліотека math
- Для математичних обчислень мова Python містить багато додаткових функцій, зібраних у бібліотеку (модуль), яка називається `math`
- Для використання цих функцій на початку програми необхідно підключити математичну бібліотеку, що робиться командою
`import math`
----
### Округлення вгору
- Наприклад, нехай ми хочемо округляти дробові числа до найближчого цілого числа нагору
- Відповідна функція `ceil` викликається так: `math.ceil(x)`
- Замість числа `x` може бути будь-яке число, змінна або вираз
----
### Приклад 10
```python=
import math
x = math.ceil(4.8) # округлення вгору
y = math.sqrt(16) # квадратний корінь
print(x)
print(y)
```
```
5
4.0
```
----
### Інші функції
| функція | Опис |
| --------------- | --------------------------------------------------------------------------- |
| `round(x, n)` | Округлює число `x` до `n` знаків після крапки |
| `pow(x, n)` | Повертає `x` в степені `n` |
| `math.floor(x)` | Округлює число вниз («підлога»), причому `floor(1.5) = 1`, `floor(-1.5) = -2` |
| `math.pi` | Константа $\pi = 3.1415...$ |
---
## Зміст
1. [Введення і виведення даних](#/1)
2. [Типи даних](#/2)
3. [Перетворення типів](#/3)
4. [Складені оператори присвоювання](#/4)
5. [Математичні функції](#/5)
> (c) [Яценко Р.М.](https://www.ek.hneu.edu.ua/vykladachi/yatsenko-roman-mykolajovych/), 2019-2023
> [ХНЕУ ім. С. Кузнеця](https://www.hneu.edu.ua/)
{"title":"Тема 2. Типи даних та змінні. Введення-виведення даних","tags":"Python","type":"slide","slideOptions":{"allottedMinutes":85,"theme":"beige","slideNumber":"c","spotlight":{"enabled":true}}}