Part 1

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

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

ОператорНазначениеПримерРезультат
+Сложение2 + 46
-Вычитание10 - 2.57.5
*Умножение-2 * 123-246
/Деление (результат с плавающей точкой)9 / 24.5
//Деление (целочисленный результат)9 // 24
%Остаток от деления9 % 21
**Возведение в степень2 ** 38

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

Например, этот фрагмент кода

print(2 + 3 * 3)
print((2 + 3) * 3)

выводит

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

11 15

Операнды, операторы и типы данных

Вычисление обычно состоит из операндов и операторов:

1 4 1

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

Деление / является исключением из этого правила. Его результат - число с плавающей точкой, даже если операнды являются целыми числами. Например, 1 / 5 даст число с плавающей точкой 0.2.

Пример:

height = 172.5
weight = 68.55

# the Body Mass Index, or BMI, is calculated by dividing body mass with the square of height
# height is converted into metres in the formula
bmi = weight / (height / 100) ** 2

print(f"The BMI is {bmi}")

Эта программа выводит следующее:

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

The BMI is 23.037177063642087

Обратите внимание, что в Python также есть оператор целочисленного деления //. Если операнды являются целыми числами, он произведет целое число. Результат округляется вниз до ближайшего целого. Например, эта программа

x = 3
y = 2

print(f"/ operator {x/y}")
print(f"// operator {x//y}")

выводит

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

/ operator 1.5 // operator 1

Числа как ввод

Мы уже использовали команду input, чтобы считывать строки от пользователя. Эту же функцию можно использовать для считывания чисел, но строку, которую возвращает функция, затем нужно преобразовать в программе к числовому типу данных. В предыдущем разделе мы приводили целые числа к строкам с помощью функции str. Здесь применяется тот же базовый принцип, но имя функции приведения будет другим.

Строку можно преобразовать в целое число с помощью функции int. Следующая программа спрашивает у пользователя год рождения и сохраняет его в переменной input_str. Затем программа создает другую переменную year, которая содержит год, преобразованный в целое число. После этого вычисление 2021-year становится возможным с использованием значения, введенного пользователем.

input_str = input("Which year were you born? ")
year = int(input_str)
print(f"Your age at the end of the year 2021: {2021 - year}" )
Пример вывода

Which year were you born? 1995 Your age at the end of the year 2021: 26

Обычно для считывания числового значения от пользователя не нужно создавать две отдельные переменные (как input_str и year выше). Вместо этого чтение ввода функцией input и преобразование функцией int можно выполнить за один шаг:

year = int(input("Which year were you born? "))
print(f"Your age at the end of the year 2021: {2021 - year}" )

Точно так же строку можно преобразовать в число с плавающей точкой с помощью функции float. Эта программа спрашивает у пользователя рост и вес и использует их для вычисления BMI:

height = float(input("What is your height? "))
weight = float(input("What is your weight? "))

height = height / 100
bmi = weight / height ** 2

print(f"The BMI is {bmi}")

Пример вывода программы:

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

What is your height? 163 What is your weight? 74.45 The BMI is 28.02137829801649

Использование переменных

Посмотрим на программу, которая вычисляет сумму трех чисел, введенных пользователем:

number1 = int(input("First number: "))
number2 = int(input("Second number: "))
number3 = int(input("Third number: "))

sum = number1 + number2 + number3
print(f"The sum of the numbers: {sum}")

Пример выполнения программы:

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

First number: 5 Second number: 21 Third number: 7 The sum of the numbers: 33

Программа использует четыре разные переменные, но в этом случае легко хватило бы двух:

sum = 0

number = int(input("First number: "))
sum = sum + number

number = int(input("Second number: "))
sum = sum + number

number = int(input("Third number: "))
sum = sum + number

print(f"The sum of the numbers: {sum}")

Теперь весь ввод пользователя считывается в одну и ту же переменную number. Значение переменной sum увеличивается на значение переменной number каждый раз, когда пользователь вводит новое число.

Рассмотрим подробнее эту команду:

sum = sum + number

Здесь значение переменной sum и значение переменной number складываются, а результат сохраняется обратно в переменную sum. Например, если перед командой значение sum равно 3, а значение number равно 2, после выполнения команды значение sum будет 5.

Увеличение значения переменной - очень распространенная операция. Поэтому существует часто используемая сокращенная запись, которая дает тот же результат, что и явное сложение выше:

sum += number

Это позволяет записать программу выше немного короче:

sum = 0

number = int(input("First number: "))
sum += number

number = int(input("Second number: "))
sum += number

number = int(input("Third number: "))
sum += number

print(f"The sum of the numbers: {sum}")

На самом деле переменная number нам не обязательно нужна вообще. Ввод пользователя можно также обрабатывать так:

sum = 0

sum += int(input("First number: "))
sum += int(input("Second number: "))
sum += int(input("Third number: "))

print(f"The sum of the numbers: {sum}")

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

number1 = int(input("First number: "))
number2 = int(input("Second number: "))

print(f"{number1} + {number2} = {number1+number2}")
Пример вывода

First number: 2 Second number: 3 2 + 3 = 5

С другой стороны, в программе выше нет именованной переменной для хранения суммы двух значений.

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

В следующем примере переменная data используется сначала для сохранения имени пользователя, а затем его возраста. Это совершенно неразумно.

data = input("What is your name? ")
print("Hi " + data + "!")

data = int(input("What is your age? "))
# program continues...

Лучше использовать отдельные переменные с описательными именами:

name = input("What is your name? ")
print("Hi " + name + "!")

age = int(input("What is your age? "))
# program continues...
Вы дошли до конца этого раздела! Перейти к следующему разделу:

Текущие баллы можно посмотреть в синем индикаторе в правом нижнем углу страницы.