Python #1.3: Целочисленная арифметика

Python #1.3: Целочисленная арифметика

vvrubel

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

Запомни
числа обозначаются без кавычек, а строки — с кавычками.

Основные операции с числами

В языке Python, как и в математике, над числами можно совершать 4 основные операции (+, −, *, /).

 Оператор  Описание
+ сложение
− вычитание
* умножение
/ деление

Порядок выполнения операций

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

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

Для того, чтобы преобразовать строку к целому числу, мы используем команду int(). Рассмотрим следующий код:

s = '1992'
year = int(s)

Мы используем новую команду (точнее, функцию) – int(). Она означает следующее: «Возьми то, что указано в качестве аргумента в скобках, и преврати это в целое число». Таким образом, переменная year имеет целый тип данных, а переменная s – строковый тип данных.

Для того, чтобы считать одно целое число, мы пишем следующий код:

num = int(input())

Для того, чтобы преобразовать целое число в строку, мы используем команду str(). Рассмотрим следующий код:

num = 17
s = str(17)

Переменная num имеет целый тип данных. С помощью команды str() мы преобразовали целое число в строку и записали результат в переменную s – строковый тип данных.

Примечания

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

<имя переменной> = <математическая формула>

Примечание 2. 
Сокращение int происходит от английского integer – целый. 

Примечание 3. 
В большинстве языков программирования переменная целого типа имеет ограничения. Например, в языке C# переменная целого типа может принимать значения из диапазона [-2^{63}; \, 2^{63} - 1]
В Python реализована так называемая длинная арифметика, то есть, по сути, переменная целого типа не имеет ограничений.

Примечание 4. 
Минус может использоваться для обозначения отрицательных чисел. А вот операции +, / и * всегда стоят между двумя переменными и что-то с ними делают.

num1 = -6      # унарный минус
num2 = 17 - 7  # бинарный минус

Дополнительные операции

Оператор Описание

** Возведение в степень

% Остаток от деления

// Целочисленное деление

Возведение в степень

Оператор возведения в степень a ** n возводит число a в степень n. Обратите внимание: оператор возведения в степень ** может возводить не только в положительную степень, но и в отрицательную (n<0). Аналогично, основание степени также может быть числом отрицательным (a<0)

Целочисленное деление

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

При делении отрицательных чисел необходимо помнить, что результат целочисленного деления не превосходит частное. Другими словами, округление берётся в меньшую сторону (число −4 меньше чем число -3).

print(10 // 3)
print(-10 // 3)

будут числа:

3   # округление в меньшую сторону
-4  # округление в меньшую сторону

Деление с остатком

Оператор деления с остатком возвращает остаток от деления двух целых чисел. Запомни: при нахождении остатка от деления на целое число n может получаться результат 0, 1 , 2, …, n −1. Например, при делении на 2 возможны остатки 0, 1, при делении на 3 возможны остатки 0, 1, 2 и т.д.

Примечания

Примечание 1. 
Оператор нахождения остатка очень полезен при решении многих задач. Например, число делится нацело на n тогда и только тогда, когда остаток от деления на n равен 0 (x % n == 0).

Примечание 2. 
Операторы // и % имеют такой же приоритет, как и операторы умножения и обычного деления.

Примечание 3. 
Наивысший приоритет имеет оператор возведения в степень **.

Примечание 4. 
Полезно прочитать про модулярную арифметику  − арифметические операции  с остатками чисел по фиксированному модулю

Примечание 5. 
Обратите внимание: результатом деления n % m при n < m является число n. Например, 5 % 9 = 5, 3 % 13 = 3 и т.д.


Обработка цифр числа

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

Рассмотрим программу получения цифр двузначного числа:

num = 17
a = num % 10
b = num // 10
print(a)
print(b)

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

7
1

То есть сначала мы вывели последнюю цифру числа, а затем первую цифру.

Запомни: 
Последняя цифра числа определяется всегда как остаток от деления числа на 10 (% 10).
Чтобы отщепить последнюю цифру от числа, необходимо разделить его нацело на 10 (// 10).

Рассмотрим программу получения цифр трёхзначного числа:

num = 754
a = num % 10
b = (num % 100) // 10
c = num // 100
print(a)
print(b)
print(c)

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

4
5
7

То есть сначала мы вывели последнюю цифру числа, затем среднюю цифру, а затем первую цифру.

Алгоритм получения цифр n-значного числа

Несложно понять, по какому алгоритму можно найти каждую цифру n-значного числа num:

Последняя цифра: (num % 101) // 100;

Предпоследняя цифра: (num % 102) // 101;

Предпредпоследняя цифра: (num % 103) // 102;

.....

Вторая цифра: (num % 10n-1) // 10n-2;

Первая цифра: (num % 10n) // 10n-1.

Решение задач

Задача 1. 
Напишите программу, определяющую число десятков и единиц в двузначном числе.
Решение.
 Число единиц – это последняя цифра числа, число десятков – первая цифра. Чтобы получить последнюю цифру любого числа, нужно найти остаток от деления числа на 10. Чтобы найти первую цифру двузначного числа, нужно поделить число нацело на 10. Программа, решающая поставленную задачу, может иметь следующий вид:

num = int(input())
last_digit = num % 10
first_digit = num // 10
print('Число десятков =', first_digit)
print('Число единиц =', last_digit)

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

num = int(input())
last_digit = num % 10
first_digit = num // 10
print('Сумма цифр =', last_digit + first_digit)

Задача 3. 
Напишите программу, которая печатает число, образованное при перестановке цифр двузначного числа.
Решение. Программа может иметь следующий вид:

num = int(input())
last_digit = num % 10
first_digit = num // 10
print('Искомое число =', last_digit * 10 + first_digit)

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

num = int(input())
digit3 = num % 10
digit2 = (num // 10) % 10
digit1 = num // 100
print(digit1, digit2, digit3, sep=',')

Примечание.

Обратите внимание: если n – пятизначное число, то первая цифра числа равна n % 100000 // 10000, что совпадает с n // 10000.



Report Page