Уроки технологии
Технология Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Работа с данными

Введение

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

Чему вы научитесь?

Создавать программы Python с помощью базовых элементов программирования, а также:

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

Выходные данные

Программа Python

Традиционно, изучение любого языка программирования, начинается с программирования в цикле «чтение — вычисление — вывод» (read-eval-print loop REPL).

Чтобы создать программу на Python, необходимо сохранить ее в файле. У файла должно быть расширение .py.

Назначение программы — реализация определенных действий, выполнение задачи. Пример программы может выглядеть так:

# program.py
sum = 1 + 2
print(sum)

Запуск программы

Предположим, что создана программа, состоящая из операторов. Чтобы запустить ее, нужно вызвать исполняемую программу Python, за которой следует имя вашей программы. Вот пример такого вызова:

1
2
# bash
python3 program.py

При выполнении такой программы в консоли отобразится следующий результат: 3

Функция print()

Одна из первых задач, которую мы решим — это вывод в консоль. Консоль — это приложение командной строки, которое позволяет взаимодействовать с операционной системой. В консоли можно выполнять команды и программы. Кроме того, вы можете вводить информацию и отображать ее в виде текста на экране.

Чтобы записать сведения в консоль, можно использовать функцию print() и реализовать ее как базовую функцию. Так как это основная функция, поэтому дополнительных библиотек нам не требуется. Чтобы использовать функцию print(), присвойте ей аргумент в виде текстовой строки:

1
2
# Python
print("Вывести эту надпись в консоль")

Обратите внимание на круглые скобки функции print() - именно так вызывается функция и обратите внимание на использование двойных кавычек (""), так как объявляется строковый литерал - “Вывести эту надпись в консоль”.

Переменные

Так как программа работает с данными, нам потребуется сохранить определенное значение во время выполнения программы. Для этого используются переменные.

В следующем примере выполняется вычисление, а затем результ вычисления сохраняется в переменных:

1
2
3
4
# Python
sum = 1 + 2 # объявляем переменную sum, которой присваивается результат сложения чисел 1 и 2
product = sum * 2 # объявлем переменную product, которой присваивается результат умножения переменной sum на 2
print(product) # выводим значение переменной product в консоль

Типы данных

Переменная делает допущение в отношении типа данных. В предыдущей программе sum присваивается тип int. Но есть гораздо больше типов данных. Вот несколько типов, с которыми вы, скорее всего, будете работать:

Тип Описание Пример(ы)
Числовой тип Число (с десятичными знаками или без них) int, float, complex, no = 3
Тип текста Строка символов str = “a literal string”
Тип Boolean Логическое continue = True

Есть более сложные типы, но мы пока остановимся на этих.

Вот фрагмент кода, демонстрирующий некоторые из перечисленных выше типов:

1
2
3
4
planets_in_solar_system = 8 # int
distance_to_alpha_centauri = 4.367 # float
can_liftoff = True # Boolean
shuttle_landed_on_the_moon = "Apollo 11" # string

Как определить тип? Если есть данные, назначаемые переменной, как в следующем коде, вы можете их обозначить:

distance_to_alpha_centauri = 4.367 # float

Другой способ — использовать функцию type():

type(distance_to_alpha_centauri) ## <class 'float'>

Операторы

Операторы позволяют выполнять вычисления с переменными и их значениями. Общая идея состоит в том, что у вас есть левая и правая стороны и оператор в центре:

<left side> <operator> <right side>

Python использует два типа операторов: арифметический оператор и оператор присваивания.

Арифметические операторы

С помощью арифметических операторов можно выполнять такие вычисления, как сложение, вычитание, деление и умножение. Вот подмножество арифметических операторов, которые вы можете использовать:

Тип Описание Пример
+ Оператор сложения 1 + 1
- Оператор вычитания 1 - 2
/ Оператор деления 10 / 2
* Оператор умножения 2 * 2

Операторы присваивания

Операторы присваивания используются для присваивания значений переменной в течение ее жизненного цикла. Вот некоторые операторы присваивания, с которыми, скорее всего, вам придется иметь дело, когда вы будете учиться создавать программы:

Оператор Пример
= x = 2 (x равен 2 )
+= x += 2 (x увеличивается на 2. Если до этого x был равен 2, то теперь имеет значение 4)
-= x -= 2 (x уменьшается на 2. Если до этого x был равен 2, то теперь имеет значение 0)
/= x /= 2 (x делится на 2. Если до этого x был равен 2, то теперь имеет значение 1)
*= x *= 2 (x умножается на 2. Если до этого x был равен 2, то теперь имеет значение 4)

Даты

Дата в программе обычно означает как календарную дату, так и время.

Дата может использоваться в различных приложениях, например:

Файл резервной копии. Использовать дату в качестве части имени файла резервной копии — это хороший способ указать, когда была создана резервная копия и когда ее нужно создать повторно.

Условие. Возможно, вам потребуется выполнить определенную логику при наступлении указанной даты.

Метрика. Даты используются для проверки производительности кода, например, для измерения времени, требующегося для выполнения функции.

Для работы с датой необходимо импортировать модуль date:

from datetime import date

Затем вы можете вызвать функции, с которыми хотите работать. Чтобы получить сегодняшнюю дату, вы можете вызвать функцию today() и отобразить дату в консоли с помощью функции print(). Функция print() принимает много типов данных в качестве входных. Вот как отобразить сегодняшнюю дату::

from datetime import date
print(date.today())

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

Вам нужно использовать дату с каким-либо типом данных, как правило, со строкой. Если, например, нужно отобразить сегодняшнюю дату в консоли, может возникнуть проблема:

from datetime import date
print("Сегодня: " + date.today())
# при выполнении будет выдано сообщение об ошибке 
# 
TypeError                                 Traceback (most recent call last)
Input In [2], in <cell line: 2>()
      1 from datetime import date
----> 2 print("Сегодня: " + date.today())

TypeError: can only concatenate str (not "datetime.date") to str

Последняя строка сообщения содержит сведения о проблеме. Вы пытаетесь использовать оператор сложения (+) и объединить два разных типа данных: строку и дату.

Чтобы этот код работал, необходимо преобразовать дату в строку. Для этого можно использовать служебную функцию str():

from datetime import date
print("Today's date is: " + str(date.today()))

Упражнение 1. Работа с выходными данными

Вы будете использовать блокнот Jupyter для создания своей программы. Ваш старший офицер хочет, чтобы вы создали код для выполнения нескольких утилит - отображения сегодняшней даты и преобразования парсеков в световые годы.

Это упражнение разбито на серию шагов. Для каждого шага вам будет представлена цель для шага, за которой следует пустая ячейка. Введите свой Python в ячейку и запустите его. Решение для каждого шага будет следовать за каждой ячейкой.

Показать сегодняшнюю дату

В ячейке ниже добавьте код для отображения сегодняшней даты. Помните, что вы можете использовать объект даты из библиотеки datetime для доступа к информации календаря.

from datetime import date
print(date.today())

Результат: 2022-04-27

Преобразования парсеков в световые годы

Теперь пришло время обратить ваше внимание на вторую утилиту, конвертирующую парсеки в световые годы. Один парсек равен 3,26 светового года, поэтому вы должны умножить парсек на это значение, чтобы определить световые годы.

Создайте переменную с именем parsecs и установите для нее значение 11. Затем добавьте код для выполнения соответствующих вычислений и сохраните результат в переменной с именем lightyears. Наконец, выведите результат на экран, чтобы отобразить сообщение, похожее на следующее:

11 парсеков это ___ световых лет

Помните, что вы можете использовать str для преобразования чисел в строки
parsecs = 11
lightyears = parsecs * 3.26
print(str(parsecs) + " парсек это " + str(lightyears) + " световых лет")

Результат: 11 парсек это 35.86 световых лет

Входные данные

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

Входные данные в командной строке

При запуске программы с помощью python3 для запуска файлу присваивается имя. Кроме того, вы можете присвоить ему набор аргументов — данные, к которым программа будет иметь доступ при запуске. Вот как это может выглядеть:

python3 backup.py 2022-01-01

В предыдущем коде строку “2022-01-01” можно использовать как инструкцию, руководствуясь которой программа запускает резервное копирование начиная с этой даты. Основное преимущество, предоставляемое аргументами командной строки, — это гибкость. Поведение программы может зависеть от внешних входных данных.

Аргументы командной строки

Как эти команды обрабатываются на стороне кода? С помощью модуля sys вы можете получить аргументы командной строки и использовать их в программе. Взгляните на следующий код:

import sys

print(sys.argv)
print(sys.argv[0]) # имя программы
print(sys.argv[1]) # первый аргумент

sys.argv является массивом или структурой данных, содержащей множество элементов. Первая позиция, обозначенная в массиве как 0, содержит имя программы. Вторая позиция, 1, содержит ваш первый аргумент. Предположим, что вы запускаете программу следующим образом:

python3 cli.py Jupiter
# где в файле cli.py содержится код:
print(sys.argv)
print(sys.argv[0]) # имя программы
print(sys.argv[1]) # первый аргумент

Тогда результат выполнения программы будет следующим:

['cli.py', 'Jupiter'] 
cli.py
Jupiter

Пользовательские данные

Другой способ передачи данных в программу — их ввод пользователем. Вы можете реализовать поведение, при котором программа запрашивает пользователя ввести информацию. Вы сохраняете введенные данные в программе, а затем работаете с ними.

Для сбора данных от пользователя используется функция input(). Ниже приведен пример:

print("Добро пожаловать в программу")
name = input("Введите свое имя: ")
print("Привет: " + name)

Работа с числами

Функция input() сохраняет результат в виде строки. Поэтому следующий код не подходит для выполнения задачи на сложение двух чисел:

print("Сложение двух числе")
first_number = input("Введите первое слагаемое: ")
second_number = input("Введите второе слагаемое: ")
print(first_number + second_number)
# Результатом выполнения программы будет объединение двух слагаемых, но не их сумма. Чтобы получить сумму надо преобразовать строковый тип данных в числовой.

print(int(first_number) + int(second_number))

Упражнение 2. Сбор входных данных

Вашему командиру нравится созданная вами программа для преобразования парсеков в световые годы, но он хочет, чтобы вы создали программу, которая будет принимать данные о количестве парсеков от пользователя.

Обновите предыдущий код вычисления световых лет. Начните с создания переменной parsecs_input, чтобы присвоить ей результат пользовательского ввода. Затем преобразуйте parsecs_input в целое число. Закончите, выполнив расчет и отобразив результат.

# parsecs = 11
parsecs_input = input("Введите количесто парсеков:")
parsecs = int(parsecs_input)
lightyears = parsecs * 3.26
# print(str(parsecs) + " парсеков это " + str(lightyears) + " световых лет")
print(parsecs_input + " парсеков это " + str(lightyears) + " световых лет")

Резюме

При работе с этим модулем вы познакомились с функцией print(), которая позволяет отображать выходные данные в консоли. Затем вы рассмотрели переменные и узнали, как с их помощью хранятся значения, которые позднее будут использоваться в коде. Вы узнали, что переменная должна иметь тип. Различные типы переменных в Python, которые позволяют хранить строки, числа и логические значения.

Кроме того, вы рассмотрели операторы, используемые для арифметических операций и для присваивания значений операторам.