owned this note
owned this note
Published
Linked with GitHub
---
title: Тема 2. Типы данных и переменные. Ввод и вывод данных
tags: Python Step
type: slide
slideOptions:
allottedMinutes: 80
slideNumber: c
theme: beige
transition: slide
spotlight:
enabled: true
---
## ++Тема 2++<br>Типы данных и переменные. Ввод и вывод данных
(c) Яценко Р.Н., 2019-2020
---
## 1. Ввод и вывод данных
----
### Вывод данных
Для печати значений в Питоне есть функция `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="http://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%20%23%20%D0%B4%D0%B2%D0%B5%20%D0%B7%D0%B2%D1%91%D0%B7%D0%B4%D0%BE%D1%87%D0%BA%D0%B8%20%D0%BE%D0%B7%D0%BD%D0%B0%D1%87%D0%B0%D1%8E%D1%82%20%D0%B2%D0%BE%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B2%20%D1%81%D1%82%D0%B5%D0%BF%D0%B5%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%D1%8D%D1%88%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%20%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%BE%D0%BC-%D0%B4%D1%80%D0%BE%D0%B1%D1%8C%D1%8E%0Aprint%2837%20//%203%29%20%20%23%20%D0%B4%D0%B2%D0%B0%20%D1%81%D0%BB%D1%8D%D1%88%D0%B0%20%D1%81%D1%87%D0%B8%D1%82%D0%B0%D1%8E%D1%82%20%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%BE%D0%B5%20%D0%BE%D1%82%20%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BD%D0%B0%D1%86%D0%B5%D0%BB%D0%BE%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%D1%8D%D1%82%D0%BE%20%D0%BA%D0%B0%D0%BA%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20div%20%D0%B2%20%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D1%85%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0%D1%85%0Aprint%2837%20%25%203%29%20%20%23%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%BD%D1%82%20%D1%81%D1%87%D0%B8%D1%82%D0%B0%D0%B5%D1%82%20%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D0%BA%20%D0%BE%D1%82%20%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BD%D0%B0%D1%86%D0%B5%D0%BB%D0%BE%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%D1%8D%D1%82%D0%BE%20%D0%BA%D0%B0%D0%BA%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20mod%20%D0%B2%20%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D1%85%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0%D1%85&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: 60vh; transform: scale(1);"> </iframe>
----
### Ввод данных
Для ввода данных в программу мы используем функцию `input()`
Она считывает одну строку
----
### Пример 2
```python
print('Как вас зовут?')
name = input() # считываем строку и кладём её в переменную name
print('Здравствуйте, ' + name + '!')
```
----
### Выполнение
<iframe frameborder="0" src="http://pythontutor.com/iframe-embed.html#code=print%28'%D0%9A%D0%B0%D0%BA%20%D0%B2%D0%B0%D1%81%20%D0%B7%D0%BE%D0%B2%D1%83%D1%82%3F'%29%0Aname%20%3D%20input%28%29%20%20%23%20%D1%81%D1%87%D0%B8%D1%82%D1%8B%D0%B2%D0%B0%D0%B5%D0%BC%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83%20%D0%B8%20%D0%BA%D0%BB%D0%B0%D0%B4%D1%91%D0%BC%20%D0%B5%D1%91%20%D0%B2%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E%20name%0Aprint%28'%D0%97%D0%B4%D1%80%D0%B0%D0%B2%D1%81%D1%82%D0%B2%D1%83%D0%B9%D1%82%D0%B5,%20'%20%2B%20name%20%2B%20'!'%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: 60vh; transform: scale(1);"> </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'`
----
### Операции над целыми числами
Знак | Операция
:---:|:-------:
`+` | сложение
`-` | вычитание
`*` | умножение
`**` | возведение в степень
`/` | деление (дробный результат)
`//` | деление нацело
`%` | остаток от деления
----
### Пример 3. Вычисления с целыми числами
```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)
```
----
### Пример 3. Результат
```
18 - 4 + 2 = 16
6 * 3 = 18
19 / 4 = 4.75
107 // 4 = 26
107 % 4 = 3
```
----
### Пример 4. Цифры трехзначного числа
```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)
```
----
### Пример 4. Выполнение
<iframe frameborder="0" src="http://pythontutor.com/iframe-embed.html#code=a%20%3D%20int%28input%28'%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5%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%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%86%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%D0%BE%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%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%8D%D1%82%D0%BE%20%D1%82%D0%BE%D0%B6%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: 60vh; transform: scale(1);"> </iframe>
----
### Операции над дробными числами (float)
Знак | Операция
:---:|:-------:
`+` | сложение
`-` | вычитание
`*` | умножение
`**` | возведение в степень
`/` | деление (дробный результат)
----
### Пример 5. Бесполезные факты
```python
name = input("Привет. Как тебя зовут? ")
age = 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(Но, увы, это продолжалось бы недолго...)")
```
----
### Пример 5. Результат
```
Привет. Как тебя зовут? Вася
Сколько тебе лет? 13
Сколько в тебе килограммов? 55
Твой нынешний возраст - свыше 409968000 секунд.
Знаете ли Вы, что на Луне вы весили бы всего 9.166666666666666 кг?
А вот находясь на Солнце, вы бы весили 1490.5 кг.
(Но, увы, это продолжалось бы недолго...)
```
---
## 3. Преобразование типов
----
### Зачем это нужно?
Часто возникает необходимость перейти от одного типа к другому. Например, выводимое на экран число `print` сначала преобразовывает в текст.
Бывают ситуации, когда нужно поменять тип без вывода информации на экран или осуществить преобразование строки в число.
Эта операция называется *преобразованием типов*
----
### Пример 6
```python
a = input()
b = input()
s = a + b
print(s)
```
----
### Выполнение
<iframe frameborder="0" src="http://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: 60vh; transform: scale(1);"> </iframe>
----
### Пример 7
```python
a = int(input())
b = int(input())
s = a + b
print(s)
```
----
### Выполнение
<iframe frameborder="0" src="http://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: 60vh; transform: scale(1);"> </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`
---
## 5. Дополнительные параметры print
----
### Функция 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`
----
### Пример 8
```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.
```
----
### Форматированный вывод
```python
student = "Вася"
old = 18
grade = 9.2
print("Это %s, ему %d. Его оценка: %.1f" % (student, old, grade))
```
`Это Вася, ему 18. Его оценка: 9.2`
Вместо трех комбинаций символов `%s, %d, %f` подставляются значения переменных `pupil`, `old`, `grade`. Буквы `s, d, f` обозначают типы данных – строку, целое число, вещественное число
Перед буквой `%f` точку с числом указывает, сколько требуется знаков после запятой
---
## Спасибо за внимание!

(c) Яценко Р.Н., 2019-2020