3.4. Правила выполнения арифметических действий
Информатика, 6 класс. Учебник: Кадыркулов Р. А., Нурмуханбетова Г. К. (Алматыкітап баспасы, 2023). Раздел 3: Программирование на языке Python. Страницы 86–89.
Чему научишься
- Знать порядок выполнения действий в Python.
- Записывать математические выражения и дроби в одну строку.
- Пользоваться сокращённой записью
+=,-=,*=и другими. - Применять функции
abs(),int()иround(). - Переводить формулы из математики на язык Python.
Разминка
- Какие правила записи действий были в Scratch? Там выражения собирались блоками, порядок задавался вложением блоков. В Python всё пишется текстом, и порядок задают правила и скобки.
- Какие правила порядка действий ты знаешь из математики? Сначала скобки, потом умножение и деление, потом сложение и вычитание.
- Какое равенство верное: 4 + 5 · 7 = 63 или 4 + 5 · 7 = 39? Верное второе: сначала 5 · 7 = 35, потом 4 + 35 = 39. В программировании так же.
Разбираемся
В каком порядке Питон считает
Порядок в Python в основном такой же, как в математике.
- Сначала действия в скобках. Если скобок несколько и они вложены, начинаем с самой внутренней.
- Потом возведение в степень
**. - Потом умножение, деление, целое деление и остаток (
*,/,//,%). - Потом сложение и вычитание (
+,-). - Потом сравнения (
<,>,==и другие). - В самом конце присваивание (
=,+=и другие).
📕 В таблице учебника у каждого знака свой номер приоритета: сначала
*, потом/, потом//, потом%, а+раньше-. На самом деле в Python у*,/,//и%один и тот же приоритет, и они считаются слева направо. То же верно для+и-. Например,8 / 2 * 3равно 12.0 (сначала 8 / 2 = 4, потом 4 * 3), а не 1.33, как получилось бы, если бы*шло раньше/.
Выражение — в одну строку
В математике дробь пишут «этажом»: числитель над чертой, знаменатель под ней. В Python такого нет. Дробь записывают в одну строку, а числитель и знаменатель берут в скобки.
| В математике | В Python |
|---|---|
| $x = \dfrac{b + 10c - 2(a+b)}{ac - 2a}$ | x = (b + 10*c - 2*(a + b)) / (a*c - 2*a) |
⚠️ Частая ошибка. Знак умножения нельзя пропускать. Математики пишут
2a, а в Python надо2*a. И не забывай скобки вокруг знаменателя:x / a * c— это совсем не то же, чтоx / (a * c).
Короче: +=, -=, *=
Увеличить переменную на число — самое частое действие в программах. Для этого есть короткая запись. Её называют инкремент (увеличение) и декремент (уменьшение).
| Полная запись | Короткая запись |
|---|---|
a = a + b |
a += b |
a = a - b |
a -= b |
a = a * b |
a *= b |
a = a / b |
a /= b |
a = a % b |
a %= b |
a = a // b |
a //= b |
a = a ** b |
a **= b |
Примеры: k = k + 1 можно написать как k += 1, sum = sum + 5 как sum += 5, а len = len - 2 как len -= 2.
💡 Это как копилка: «добавить 500 тенге» —
money += 500. Не надо писатьmoney = money + 500.
Стандартные функции: abs(), int(), round()
x = -9; y = 9
print(abs(x), abs(y)) # 9 9, модуль числа (без знака минус)
x = 3.169; y = 3.98
print(int(x), int(y)) # 3 3, дробная часть отброшена
x = 5.16; y = 5.89
print(round(x), round(y)) # 5 6, округление до ближайшего целого
abs()даёт модуль числа: расстояние до нуля, всегда неотрицательное.int()просто отбрасывает дробную часть:int(3.98)равно 3.round()округляет до ближайшего целого:round(5.89)равно 6.
🌟 В Python есть и другие математические функции, но для них нужно подключать специальный модуль. С этим ты познакомишься в старших классах.
👨👩👧 Родителю. Дайте ребёнку формулу из бытовой жизни, например стоимость поездки в такси: посадка 300 тенге плюс 90 тенге за километр. Пусть запишет её в Python:
price = 300 + 90 * km. Так формулы перестают быть абстрактными.
Проверь себя
- Сформулируй правила записи арифметических действий на языке программирования. Выражение пишется в одну строку, знак умножения обязателен, дробь записывают через
/с скобками, порядок задают скобками и приоритетами. - Какие приоритеты у действий? Скобки, потом
**, потом умножение и деление (*,/,//,%), потом+и-, потом сравнения, в конце присваивание. - Почему важно соблюдать правила? Иначе компьютер посчитает по-другому и даст неверный ответ, а то и вовсе выдаст ошибку.
- Чем
int()отличается отround()?int()отбрасывает дробную часть,round()округляет до ближайшего целого.
Решаем упражнения
№ 1
(Примени на практике, «Практическое задание № 1».) Составь программу, которая вычисляет y = (a + 2b − 3c) / (5a + b) при a = 4, b = 3.5, c = 2.
Как думать. Числитель и знаменатель берём в скобки, умножения пишем со знаком *.
Решение.
a = 4; b = 3.5; c = 2
print((a + 2*b - 3*c) / (5*a + b))
Ответ: 0.2127659574468085 (примерно 0,213).
№ 2
(Примени на практике, «Практическое задание № 2».) Составь программу, которая вычисляет значение выражения $y = \dfrac{|a + 2c|}{b^2 + 3ac} \cdot a,(3 + (4 - a^2))$. Пример: a = 4, b = 5, c = 1 даёт −5.8378378.
Как думать. Модуль — это abs(). Квадрат можно записать как b*b. Дробь в одну строку, внутри скобок.
Решение.
a = float(input())
b = float(input())
c = float(input())
print(abs(a + 2*c) / (b*b + 3*a*c) * a * (3 + (4 - a*a)))
Для 4, 5, 1: |4 + 2| = 6, знаменатель 25 + 12 = 37, дробь 6/37. Дальше · 4 · (3 + (4 − 16)) = 4 · (−9) = −36. Итог −36 · 6/37 ≈ −5.8378.
Ответ: примерно −5.8378378 (Питон выведет −5.837837837837839, длиннее, но то же число).
№ 3
(Вопросы для размышления, № 1.) Сформулируй правила записи арифметических действий на языке программирования.
Как думать. Вспомни три главных правила из урока.
Пример ответа. Выражение пишется в одну строку. Умножение всегда пишется знаком *. Дроби записывают через / со скобками вокруг числителя и знаменателя. Порядок выполнения задают скобки и приоритеты операций.
Ответ: в одну строку, со знаком *, дроби через / со скобками, порядок задают скобки и приоритеты.
№ 4
(Вопросы для размышления, № 2.) Какие приоритеты имеют арифметические действия?
Как думать. Иди от самого сильного к самому слабому.
Решение. Скобки, потом степень **, потом *, /, //, %, потом + и -, потом сравнения, потом присваивание. Действия одного приоритета выполняются слева направо.
Ответ: скобки, **, умножение и деление (*, /, //, %), сложение и вычитание, сравнения, присваивание.
№ 5
(Вопросы для размышления, № 3.) Почему важно соблюдать правила применения арифметических действий?
Как думать. Что будет, если записать 4 + 5 * 7 и ждать 63?
Пример ответа. Если не соблюсти правила, компьютер выполнит действия не в том порядке и выдаст неверный результат, хотя ошибки не покажет. А если забыть знак умножения или скобку, программа вообще не запустится.
Ответ: иначе результат будет неверным или программа не заработает.
№ 6
(Вопросы для размышления, № 4.) В чём разница между функциями int() и round()?
Как думать. Возьми число 5.89 и посмотри, что сделает каждая функция.
Решение. int(5.89) равно 5, потому что дробная часть отбрасывается. round(5.89) равно 6, потому что число округляется до ближайшего целого.
Ответ: int() отбрасывает дробную часть, round() округляет до ближайшего целого.
№ 7
(Задания, № 1**.) Запиши на языке Python четыре математических выражения: 1) $a^2 + b^2 + c^2 - 2ab$; 2) $xy + \dfrac{a+4}{b-4}$; 3) $\dfrac{|x^2 - 5|}{3y(5x + (4a + bt) - z)}$; 4) $x + 5 + \dfrac{y}{t(5x - c)}$.
Как думать. Везде ставим * между множителями, степень **, модуль abs(), дробь в скобках.
Решение.
a**2 + b**2 + c**2 - 2*a*bx*y + (a + 4) / (b - 4)abs(x**2 - 5) / (3*y*(5*x + (4*a + b*t) - z))x + 5 + y / (t*(5*x - c))
Ответ: см. записи выше.
№ 8
(Задания, № 2*.) В таблице даны математические выражения и их записи на Python. Найди записи с ошибками и исправь.
Как думать. Сравнивай каждую запись с формулой: все ли степени, знаки, скобки и множители на месте.
Решение.
- $y = \frac45 + \frac12 - 2 + 5\cdot\frac{7}{10}$. Запись
y = 4/5 + 1/2 - 2 + 5 * 7/10верна. Слева направо:5 * 7 / 10= 3.5, то же, что 5 · 7/10. - $x = a^3 + 4b - |4ab^2 - 7|$. Запись
x = a * 3 + 4*b - abs(4*a*b * 2 - 7)неверна. Ошибки:a * 3это утроенноеa, а нужен кубa**3;b * 2это удвоенноеb, а нужен квадратb**2. Правильно:x = a**3 + 4*b - abs(4*a*b**2 - 7). - $k = \frac{2xyz}{3x+z} - \frac{5x^3y - z}{z - 4y}$. Запись
k = (2x * y * z)/(3 * x - z) - (5 * x * y - z)/(z - 4y)неверна. Ошибки:2xбез знака умножения; в знаменателе3 * x - z, а должно быть плюс; нет степени уxв5x³y; в конце4yбез знака умножения. Правильно:k = (2*x*y*z) / (3*x + z) - (5*x**3*y - z) / (z - 4*y). - $t = \dfrac{|3c - d - a|}{|a - d|} \cdot 5ab$. Запись
t = abs(3*c - d - a) / abs(a - d) * 5abневерна только одним:5abбез знаков умножения. Правильно:t = abs(3*c - d - a) / abs(a - d) * 5*a*b.
Ответ: верна только запись 1, в записях 2, 3, 4 ошибки исправлены выше.
№ 9
(Задания, № 3**.) Даны размеры кирпича a, b, c. Составь программу, которая вычисляет сумму $\frac12$ и $\frac13$ объёма кирпича.
Как думать. Объём кирпича V = a · b · c. Нужно найти V/2 + V/3.
Решение.
a = float(input()) # ширина
b = float(input()) # длина
c = float(input()) # высота
V = a * b * c # объём
print(V / 2 + V / 3) # половина плюс треть
Проверка: a = 2, b = 3, c = 4. V = 24, 24/2 + 24/3 = 12 + 8 = 20.
Ответ: V / 2 + V / 3, где V = a·b·c (для 2, 3, 4 получится 20.0).
№ 10
(Задания, № 4***.) Даны ширина, длина и высота кирпича a, b, c. Найди отношение объёма кирпича к площади его полной поверхности.
Как думать. Объём: a · b · c. У кирпича шесть граней, они попарно равны: площадь полной поверхности S = 2(ab + bc + ac). Нужно V / S.
Решение.
a = float(input())
b = float(input())
c = float(input())
V = a * b * c # объём
S = 2 * (a*b + b*c + a*c) # площадь полной поверхности
print(V / S)
Проверка: a = 2, b = 3, c = 4: V = 24, S = 2 · (6 + 12 + 8) = 52, отношение 24/52 ≈ 0.4615.
Ответ: отношение равно a*b*c / (2*(a*b + b*c + a*c)).
№ 11
(Домашнее задание.) Школа купила 12 м ткани для художественного труда. На ситец и шёлк потратили 2340 тенге. Метр шёлка стоит 420 тенге, шёлка куплено 3 м. Сколько стоит метр ситца? 1) Найди математическое решение и составь код. 2) Обозначь величины переменными и составь код универсальной программы.
Как думать. Шёлк: 3 м по 420 тенге, это 1260 тенге. Остальное потрачено на ситец. Ситца куплено 12 − 3 = 9 м.
Решение.
- Математически:
- Стоимость шёлка: 420 · 3 = 1260 тенге.
- Стоимость ситца: 2340 − 1260 = 1080 тенге.
- Длина ситца: 12 − 3 = 9 м.
- Цена метра ситца: 1080 / 9 = 120 тенге.
print((2340 - 420 * 3) / (12 - 3))
- С переменными:
t— вся длина ткани,s— вся сумма,m— цена метра шёлка,n— длина шёлка.
t = int(input()) # вся ткань, м
s = int(input()) # вся сумма, тенге
m = int(input()) # цена метра шёлка
n = int(input()) # сколько метров шёлка
print((s - m * n) / (t - n))
Ответ: 120 тенге за метр ситца.
Шпаргалка
Термины: арифметическое выражение, приоритет операций, инкремент, декремент, стандартная функция, модуль, округление.