Наталья Кайда 14 октября 2022

🐍 Самоучитель по Python для начинающих. Часть 3. Типы данных: преобразование и базовые операции

В этой части мы рассмотрим способы ввода и вывода информации, встроенные типы данных, математические операции с числами и способы преобразования одних типов данных в другие. В конце статьи – 10 практических заданий с решениями.
🐍 Самоучитель по Python для начинающих. Часть 3. Типы данных: преобразование и базовые операции
Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
Методы работы со строками

Ввод, вывод данных и переменные в Python

Большинство программ, даже самых простых, выполняют обработку какой-либо информации – получают разнообразные данные, производят необходимые операции, после чего выводят результат. За ввод и вывод данных в Python отвечают встроенные функции input() и print(). С помощью функции вывода print() можно написать классическую программу Hello, World! в одну строку:

        >>> print('Hello, World!')
Hello, World!

    

Для ввода нужной информации используют input(). В этом примере переменная name с помощью оператора присваивания = получит введенное пользователем значение:

        name = input()
    

Чтобы пользователю было понятнее, какое именно значение от него ожидает программа, можно добавить пояснение:

        name = input('Как тебя зовут? ')
    

Или:

        name = input('Введите свое имя ')
    

Напишем программу, которая запрашивает имя пользователя и выводит приветствие:

        name = input('Как тебя зовут? ')
print('Привет,', name)

    

Результат:

        Как тебя зовут? Вася
Привет, Вася

    

В этой программе используются две встроенные функции input() и print(), а также переменная name. Переменная – это именованная область памяти, в которой во время выполнения программы хранятся данные определенного типа (о типах данных расскажем ниже). В стандартах оформления кода PEP 8 даны рекомендации по названиям переменных:

  • Названия не должны начинаться с цифры, но могут заканчиваться цифрой. Например, назвать переменную 7up – неправильно, а так – seven11 – можно.
  • Названия могут состоять из комбинации строчных, заглавных букв, цифр и символов подчеркивания: lower_case, mixedCase, CapitalizedCase, UPPER_CASE, lower123.
  • Не следует давать переменным названия, совпадающие со служебными словами, названиями встроенных функций и методов, к примеру – print, list, dict, set, pass, break, raise.
  • Следует избегать использования отдельных букв, которые могут быть ошибочно приняты друг за друга – l (L в нижнем регистре), I (i в верхнем регистре) или за нуль – O.
  • В названиях не должно быть пробелов, дефисов и специальных символов, например, ' или $.
  • Главный принцип именования переменных – осмысленность. По названию переменной должно быть понятно, какого рода данные в ней хранятся – например, car_model, petName, CARD_NUMBER более информативны, чем a, а1, а2.

Переменные выполняют две важные функции:

  • делают код понятнее;
  • дают возможность многократно использовать введенные данные.

Если программа небольшая, а введенное значение используется однократно, можно обойтись без использования переменной:

        print('Привет,', input('Как тебя зовут?'))
    
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

Ввод и вывод нескольких переменных, f-строки

Если в программе используются несколько переменных, ввод данных можно оформить на отдельных строках:

        first_name = input()
last_name = input()
age = input()

    

Или в одну строку:

        first_name, last_name, age = input(), input(), input()
    

Либо так – если значения переменных равны:

        x1 = x2 = x3 = input()
    

Чтобы вывести значения переменных на экран, названия перечисляют в print() через запятую:

        print(first_name, last_name, age)
    

Или по отдельности:

        print(first_name)
print(last_name)
print(age)
    

При перечислении через запятую Python выводит все переменные в одну строку, разделяя значения пробелами:

        Вася Пупкин 12
    

Вместо пробела можно подставить любой другой разделитель. Например:

        print(first_name, last_name, age, sep="***")
    

В результате значения будут разделены звездочками:

        Вася***Пупкин***12
    

Если нужно вывести значения не в строку, а в столбик, можно воспользоваться специальным параметром end="\n" – он обеспечивает переход на новую строку:

        print(first_name, last_name, age, end="\n")
    

Чтобы сделать вывод более информативным, используют f-строки:

        print(f'Имя: {first_name}, Фамилия: {last_name}, Возраст: {age}')
    

Все содержимое такой строки находится в конструкции f'...', а названия переменных внутри строки заключаются в фигурные скобки {...}.

Операции во время вывода

Функция print(), помимо вывода результатов работы программы, допускает проведение разнообразных операций с данными:

        >>> print(5 + 5)
10
>>> print(10 // 3)
3
>>> print(6 ** 2)
36
>>> print('I' + ' love' + ' Python')
I love Python

    

Встроенные типы данных в Python

Питон работает с двумя категориями данных – встроенными типами (они поддерживаются по умолчанию) и специализированными (для операций с ними нужно подключение определенного модуля). К специализированным типам данных относятся, например, datetime (дата и время) и deque (двухсторонняя очередь).

Все встроенные типы данных в Python можно разделить на следующие группы:

  • Числовые – целые, вещественные, комплексные числа. Примечание: для максимально точных расчетов с десятичными числами в Python используют модуль decimal (тип данных Decimal), а для операций с рациональными числами (дробями) – модуль fractions (тип данных Fraction).
  • Булевы – логические значения True (истина) и False (ложь).
  • Строковые – последовательности символов в кодировке Unicode.
  • NoneType – нейтральное пустое значение, аналогичное null в других языках программирования.
  • Последовательности – списки, кортежи, диапазоны.
  • Словари – структура данных типа «ключ: значение».
  • Множества – контейнеры, содержащие уникальные значения. Подразделяются на изменяемые 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': '30x50'} dict a = dict(color='red', model='VC6', dimensions='30x50')
Байты b'\x00\x00\x00' bytes a = bytes(3)
Байтовая строка (b'\x00\x00') bytearray a = bytearray(2)
Просмотр памяти 0x1477a5813a00 memoryview a = memoryview(bytes(15))

Чтобы узнать тип данных, нужно воспользоваться встроенной функцией type():

        >>> a = 3.5
>>> type(a)
<class 'float'>

    

Как задать тип переменной

Важно заметить, что если тип переменной не указан явно при вводе, т.е. ввод выполняется как a = input(), то Python будет считать введенное значение строкой. В приведенном ниже примере Питон вместо сложения двух чисел выполняет конкатенацию строк:

        >>> a, b = input(), input()
5
6
>>> print(a + b)
56

    

Это произошло потому, что a и b были введены как строки, а не целые числа:

        >>> 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

Python допускает применение сложения и умножения в операциях со строками. Сложение строк, как уже упоминалось выше, называется конкатенацией:

        >>> 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'

    

Преобразование типов данных

Python позволяет на лету изменять типы данных. Это может оказаться очень полезным при решении тренировочных и практических задач.

Округление вещественного числа:

        >>> 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']

    

Разумеется, преобразование типов данных происходит в определенных пределах – строку, содержащую буквенные и специальные символы, нельзя сделать числом, а превращение списка, строки, множества или кортежа в словарь потребует дополнительных манипуляций, которые мы изучим позже.

Практика – задачи с решениями

Задание 1. Напишите программу, которая запрашивает имя и возраст пользователя, и выводит приветствие и возраст пользователя в следующем году. Пример работы программы:

        Как тебя зовут? Катя
Привет, Катя!
Сколько тебе лет? 14
Здорово! В следующем году тебе будет 15!

    

Решение:

        name = input('Как тебя зовут? ')
print(f'Привет, {name}!')
age = int(input('Сколько тебе лет? '))
print(f'Здорово! В следующем году тебе будет {age + 1}!')

    

Задание 2. Напишите программу, которая запрашивает имя, фамилию и возраст пользователя, а затем выводит эти данные в столбик с помощью f-строки. Результат работы программы:

        Имя: Евгения
Фамилия: Фролова
Возраст: 19

    

Решение:

        first_name = input()
last_name = input()
age = input()
print(f'Имя: {first_name}\nФамилия: {last_name}\nВозраст: {age}')

    

Задание 3. Напишите программу, которая выводит на экран прямоугольник 5 х 15, сформированный из звездочек. Пример вывода:

        ***************
*             *
*             *
*             *
***************

    

Решение:

        print('*' * 15)
print('*' + ' ' * 13 + '*')
print('*' + ' ' * 13 + '*')
print('*' + ' ' * 13 + '*')
print('*' * 15)

    

Задание 4. Напишите программу, которая получает на вход целое число n из диапазона от 1 до 9 включительно, и выводит результат вычисления выражения nnn – nn – n. Например, если введенное число 3, программа должна вывести 297 (333 – 33 – 3).

Решение:

        num1 = input()
num2 = int(num1 * 2)
num3 = int(num1 * 3)
print(num3 - num2 - int(num1))

    

Задание 5. Напишите программу, которая получает на вход целые положительные числа a и b, а затем выводит результаты математических операций в следующем формате:

        Число а в степени 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)

    

Задание 6. Напишите программу, которая получает от пользователя вещественные числа a и b – длину и ширину прямоугольника, – и выводит периметр и площадь прямоугольника в следующем формате:

        Площадь S = 88.0
Периметр P = 38.0

    

Площадь вычисляется по формуле S = a * b, периметр P = 2 * (a + b).

Решение:

        a, b = float(input()), float(input())
print('Площадь S =', a * b)
print('Периметр P =', 2 * (a + b))

    

Задание 7. Напишите программу, которая получает на вход число от 420 до 540 (оптимальная продолжительность сна в минутах) и помогает пользователю определить, на какое время (в формате «часы:минуты») нужно установить звонок будильника. Отсчет времени начинается с полуночи.

Пример ввода:

        470
    

Вывод:

        Поставь будильник на 7:50
    

Решение:

        time = int(input())
print(f'Поставь будильник на {time // 60}:{time % 60}')

    

Задание 8. Напишите программу, которая получает на вход целое число n – количество дней, и конвертирует n в годы, месяцы и дни.

Пример ввода:

        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}')

    

Задание 9. Напишите программу, которая получает от пользователя целое число n – количество секунд, и конвертирует n в часы, минуты и секунды.

Пример ввода:

        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}')

    

Задание 10. Напишите программу, которая получает на вход вещественные числа x1, y1, х2, y2 – координаты точек a (x1, y1) и b (х2, y2) на плоскости – и вычисляет расстояние между a и b.

Пример ввода:

        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)

    

Примечание: модуль math, работу с которым мы рассмотрим подробнее позже, имеет функцию 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)

    

Подведем итоги

В этой части мы рассмотрели базовые типы данных в Python, разобрали дополнительные параметры ввода и вывода, научились преобразовывать одни типы данных в другие, написали первые простые программы. В следующей части будем изучать методы работы со строками.

***

📖 Содержание самоучителя

  1. Особенности, сферы применения, установка, онлайн IDE
  2. Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
  3. Типы данных: преобразование и базовые операции
  4. Методы работы со строками
  5. Методы работы со списками и списковыми включениями
***

Материалы по теме

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Data Scientist
Москва, по итогам собеседования
Junior DevOps
Томск, по итогам собеседования
Junior iOS developer
Новосибирск, от 60000 RUB до 100000 RUB

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ