Типы данных в Python
В этой части мы рассмотрим способы ввода и вывода информации, встроенные типы данных, математические операции с числами и способы преобразования одних типов данных в другие. В конце статьи – 10 практических заданий с решениями. ← Часть 2 Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы Большинство программ, даже самых простых, выполняют обработку какой-либо информации – получают разнообразные данные, производят необходимые операции, после чего выводят результат. За ввод и вывод данных в Python отвечают встроенные функции input() и print(). С помощью функции вывода print() можно написать классическую программу Hello, World! в одну строку: Для ввода нужной информации используют input(). В этом примере переменная Чтобы пользователю было понятнее, какое именно значение от него ожидает программа, можно добавить пояснение: Или: Напишем программу, которая запрашивает имя пользователя и выводит приветствие: Результат: В этой программе используются две встроенные функции input() и print(), а также переменная Переменные выполняют две важные функции: Если программа небольшая, а введенное значение используется однократно, можно обойтись без использования переменной: Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста» Интересно, перейти к каналу Если в программе используются несколько переменных, ввод данных можно оформить на отдельных строках: Или в одну строку: Либо так – если значения переменных равны: Чтобы вывести значения переменных на экран, названия перечисляют в print() через запятую: Или по отдельности: При перечислении через запятую Python выводит все переменные в одну строку, разделяя значения пробелами: Вместо пробела можно подставить любой другой разделитель. Например: В результате значения будут разделены звездочками: Если нужно вывести значения не в строку, а в столбик, можно воспользоваться специальным параметром Чтобы сделать вывод более информативным, используют f-строки: Все содержимое такой строки находится в конструкции Функция print(), помимо вывода результатов работы программы, допускает проведение разнообразных операций с данными: Питон работает с двумя категориями данных – встроенными типами (они поддерживаются по умолчанию) и специализированными (для операций с ними нужно подключение определенного модуля). К специализированным типам данных относятся, например, datetime (дата и время) и deque (двухсторонняя очередь). Все встроенные типы данных в Python можно разделить на следующие группы: В таблице приведены примеры и определения встроенных типов данных: Чтобы узнать тип данных, нужно воспользоваться встроенной функцией type(): Важно заметить, что если тип переменной не указан явно при вводе, т.е. ввод выполняется как Это произошло потому, что a и b были введены как строки, а не целые числа: Чтобы ввести целое число, следует использовать конструкцию Все операции в математике имеют определенный приоритет: сначала выполняется возведение в степень, затем деление по модулю и так далее. Этот приоритет соблюдается и в Питоне: Python допускает применение сложения и умножения в операциях со строками. Сложение строк, как уже упоминалось выше, называется конкатенацией: Умножение строки на целое число называется репликацией: Однако попытки умножить строки друг на друга или на вещественное число обречены на провал: Python позволяет на лету изменять типы данных. Это может оказаться очень полезным при решении тренировочных и практических задач. Округление вещественного числа: Преобразование целого числа в вещественное: Преобразование строки в число и вывод числа без ведущих нулей: Сложение строки и числа: Преобразование списка в строку: Преобразование строки в множество: Преобразование строки в список: Преобразование кортежа в список: Разумеется, преобразование типов данных происходит в определенных пределах – строку, содержащую буквенные и специальные символы, нельзя сделать числом, а превращение списка, строки, множества или кортежа в словарь потребует дополнительных манипуляций, которые мы изучим позже. Задание 1. Напишите программу, которая запрашивает имя и возраст пользователя, и выводит приветствие и возраст пользователя в следующем году. Пример работы программы: Решение: Задание 2. Напишите программу, которая запрашивает имя, фамилию и возраст пользователя, а затем выводит эти данные в столбик с помощью f-строки. Результат работы программы: Решение: Задание 3. Напишите программу, которая выводит на экран прямоугольник 5 х 15, сформированный из звездочек. Пример вывода: Решение: Задание 4. Напишите программу, которая получает на вход целое число n из диапазона от 1 до 9 включительно, и выводит результат вычисления выражения nnn – nn – n. Например, если введенное число 3, программа должна вывести 297 (333 – 33 – 3). Решение: Задание 5. Напишите программу, которая получает на вход целые положительные числа a и b, а затем выводит результаты математических операций в следующем формате: Решение: Задание 6. Напишите программу, которая получает от пользователя вещественные числа a и b – длину и ширину прямоугольника, – и выводит периметр и площадь прямоугольника в следующем формате: Площадь вычисляется по формуле S = a * b, периметр P = 2 * (a + b). Решение: Задание 7. Напишите программу, которая получает на вход число от 420 до 540 (оптимальная продолжительность сна в минутах) и помогает пользователю определить, на какое время (в формате «часы:минуты») нужно установить звонок будильника. Отсчет времени начинается с полуночи. Пример ввода: Вывод: Решение: Задание 8. Напишите программу, которая получает на вход целое число n – количество дней, и конвертирует n в годы, месяцы и дни. Пример ввода: Вывод: Решение: Задание 9. Напишите программу, которая получает от пользователя целое число n – количество секунд, и конвертирует n в часы, минуты и секунды. Пример ввода: Вывод: Решение: Задание 10. Напишите программу, которая получает на вход вещественные числа x1, y1, х2, y2 – координаты точек a (x1, y1) и b (х2, y2) на плоскости – и вычисляет расстояние между a и b. Пример ввода: Вывод: Решение: Примечание: модуль math, работу с которым мы рассмотрим подробнее позже, имеет функцию В этой части мы рассмотрели базовые типы данных в Python, разобрали дополнительные параметры ввода и вывода, научились преобразовывать одни типы данных в другие, написали первые простые программы. В следующей части будем изучать методы работы со строками. *** *** Ввод, вывод данных и переменные в Python
>>> print('Hello, World!') Hello, World!
name
с помощью оператора присваивания =
получит введенное пользователем значение:
name = input()
name = input('Как тебя зовут? ')
name = input('Введите свое имя ')
name = input('Как тебя зовут? ') print('Привет,', name)
Как тебя зовут? Вася Привет, Вася
name
. Переменная – это именованная область памяти, в которой во время выполнения программы хранятся данные определенного типа (о типах данных расскажем ниже). В стандартах оформления кода PEP 8 даны рекомендации по названиям переменных:7up
– неправильно, а так – seven11
– можно.lower_case
, mixedCase
, CapitalizedCase
, UPPER_CASE
, lower123
.l
(L в нижнем регистре), I
(i в верхнем регистре) или за нуль – O
.'
или $
.
print('Привет,', input('Как тебя зовут?'))
Ввод и вывод нескольких переменных, f-строки
first_name = input() last_name = input() age = input()
first_name, last_name, age = input(), input(), input()
x1 = x2 = x3 = input()
print(first_name, last_name, age)
print(first_name) print(last_name) print(age)
Вася Пупкин 12
print(first_name, last_name, age, sep="***")
Вася***Пупкин***12
end="n"
– он обеспечивает переход на новую строку:
print(first_name, last_name, age, end="n")
print(f'Имя: {first_name}, Фамилия: {last_name}, Возраст: {age}')
f'...'
, а названия переменных внутри строки заключаются в фигурные скобки {...}
.Операции во время вывода
>>> print(5 + 5) 10 >>> print(10 // 3) 3 >>> print(6 ** 2) 36 >>> print('I' + ' love' + ' Python') I love Python
Встроенные типы данных в Python
decimal
(тип данных Decimal), а для операций с рациональными числами (дробями) – модуль fractions
(тип данных Fraction).set
и неизменяемые frozenset
множества.bytes
(байты), bytearray
(изменяемая байтовая строка), memoryview
(предоставление доступа к внутренним данным объекта).Тип данных
Значение
Определение в Python
Вариант использования
Целые числа
-3, -2, -1, 0, 1, 2, 3
int
a = int(input())
Вещественные числа
-1.5, -1.1, 0.6, 1.7
float
a = float(input())
Комплексные числа
−5i, 3+2i
complex
a = complex(input())
Булевы значения
True, False
True, False
flag = True
NoneType
None
None
a = None
Строка
‘abracadabra’
str
a = str(5)
Список
[1, 2, 3], [‘a’, ‘b’, ‘c’]
list
a = list((‘a’, ‘b’, ‘c’))
Кортеж
(‘red’, ‘blue’, ‘green’)
tuple
a = tuple((‘red’, ‘blue’, ‘green’))
Изменяемое множество
{‘black’, ‘blue’, ‘white’}, {1, 3, 9, 7}
set
a = set((‘black’, ‘blue’, ‘white’))
Неизменяемое множество
{‘red’, ‘blue’, ‘green’}, {2, 3, 9, 5}
frozenset
a = frozenset((2, 5, 3, 9))
Диапазон
0, 1, 2, 3, 4, 5
range
a = range(6)
Словарь
{‘color’: ‘red’, ‘model’: ‘VC6’, ‘dimensions’: ’30×50′}
dict
a = dict(color=’red’, model=’VC6′, dimensions=’30×50′)
Байты
b’x00x00x00′
bytes
a = bytes(3)
Байтовая строка
(b’x00x00′)
bytearray
a = bytearray(2)
Просмотр памяти
0x1477a5813a00
memoryview
a = memoryview(bytes(15))
>>> a = 3.5 >>> type(a) <class 'float'>
Как задать тип переменной
a = input()
, то Python будет считать введенное значение строкой. В приведенном ниже примере Питон вместо сложения двух чисел выполняет конкатенацию строк:
>>> a, b = input(), input() 5 6 >>> print(a + b) 56
>>> type(a) <class 'str'> >>> type(b) <class 'str'>
int(input())
, вещественное –float(input())
.Математические операции в Python
Приоритет
Оператор Python
Операция
Пример
Результат
1
**
Возведение в степень
5 ** 5
3125
2
%
Деление по модулю (получение остатка)
16 % 7
2
3
//
Целочисленное деление (дробная часть отбрасывается)
13 // 3
4
4
/
Деление
39 / 2
19.5
5
*
Умножение
123 * 321
39483
6
—
Вычитание
999 – 135
864
7
+
Сложение
478 + 32
510
>>> print('Python -' + ' лучший' + ' язык' + ' программирования') Python - лучший язык программирования
>>> print('Репликанты' * 5) РепликантыРепликантыРепликантыРепликантыРепликанты
>>> print('Репликанты' * 5.5) Traceback (most recent call last): File "<pyshell>", line 1, in <module> TypeError: can't multiply sequence by non-int of type 'float'
Преобразование типов данных
>>> a = float(input()) 5.123 >>> print(int(a)) 5
>>> a = 5 >>> print(float(a)) 5.0
>>> a = '00032567' >>> print(int(a)) 32567
>>> a = 'Apollo ' >>> b = 13 >>> print(a + str(b)) Apollo 13
>>> a = ['п', 'р', 'и', 'в', 'е', 'т'] >>> print('*'.join(a)) п*р*и*в*е*т
>>> a = 'привет' >>> print(set(a)) {'в', 'е', 'и', 'т', 'п', 'р'}
>>> a = 'я изучаю Python' >>> print(list(a)) ['я', ' ', 'и', 'з', 'у', 'ч', 'а', 'ю', ' ', 'P', 'y', 't', 'h', 'o', 'n']
>>> a = ('red', 'blue', 'green') >>> print(list(a)) ['red', 'blue', 'green']
Практика – задачи с решениями
Как тебя зовут? Катя Привет, Катя! Сколько тебе лет? 14 Здорово! В следующем году тебе будет 15!
name = input('Как тебя зовут? ') print(f'Привет, {name}!') age = int(input('Сколько тебе лет? ')) print(f'Здорово! В следующем году тебе будет {age + 1}!')
Имя: Евгения Фамилия: Фролова Возраст: 19
first_name = input() last_name = input() age = input() print(f'Имя: {first_name}nФамилия: {last_name}nВозраст: {age}')
*************** * * * * * * ***************
print('*' * 15) print('*' + ' ' * 13 + '*') print('*' + ' ' * 13 + '*') print('*' + ' ' * 13 + '*') print('*' * 15)
num1 = input() num2 = int(num1 * 2) num3 = int(num1 * 3) print(num3 - num2 - int(num1))
Число а в степени b = 25 Произведение a * b = 10 Сумма a + b = 7 Разница a - b = 3
a, b = int(input()), int(input()) print('Число а в степени b =', a ** b) print('Произведение a * b =', a * b) print('Сумма a + b =', a + b) print('Разница a - b =', a - b)
Площадь S = 88.0 Периметр P = 38.0
a, b = float(input()), float(input()) print('Площадь S =', a * b) print('Периметр P =', 2 * (a + b))
470
Поставь будильник на 7:50
time = int(input()) print(f'Поставь будильник на {time // 60}:{time % 60}')
398
Годы: 1 Месяцы: 1 Дни: 3
n = int(input("Введите количество дней: ")) years = n // 365 months = (n - years * 365) // 30 days = (n - years * 365 - months * 30) print(f'Годы: {years} Месяцы: {months} Дни: {days}')
3426
Часы: 0 Минуты: 57 Секунды: 6
n = int(input()) seconds = n % (24 * 3600) hours = seconds // 3600 seconds = seconds % 3600 minutes = seconds // 60 seconds = seconds % 60 print(f'Часы: {hours} Минуты: {minutes} Секунды: {seconds}')
3.6 6.7 5.4 15.2
10.278618584226189
x1, x2, y1, y2 = float(input()), float(input()), float(input()), float(input()) dist = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5 print(dist)
dist
для вычисления расстояния между точками на плоскости и в пространстве:
import math x1, x2, y1, y2 = float(input()), float(input()), float(input()), float(input()) a, b = [x1, y1], [x2, y2] d = math.dist(a, b) print(d)
Подведем итоги
📖 Содержание самоучителя
Материалы по теме
- 0 views
- 0 Comment