Операторы, сравнения и условия
На этой странице описаны символы и слова, объединяющие значения: арифметика, порядок действий, сравнения с результатами true или false, логические и побитовые операции. Обратитесь сюда, если получаете неожиданное число или хотите поручить заметке проверку — например, укладываетесь ли вы в бюджет.
Арифметика
| Оператор | Варианты записи | Пример | Результат |
|---|---|---|---|
| Сложение | +, plus |
£12.50 + £4.30 |
£16.80 |
| Вычитание | -, −, minus |
£20 - £4.50 |
£15.50 |
| Умножение | *, ×, times, multiplied by, запись множителей рядом |
3 × £4.50, 2(3 + 4) |
£13.50, 14 |
| Деление | /, ÷, divided by |
£60 / 4 |
£15.00 |
| Возведение в степень | ^, **, to the power of, raised to, exponent |
2 ** 3, 2 raised to 10 |
8, 1,024 |
| Остаток | mod, % (между двумя числами) |
50 mod 6, 50 % 6 |
2 |
| Квадратный корень | √, sqrt(...), square root of |
√144 |
12 |
| Квадрат / куб | ², ³ |
3³ |
27 |
| Факториал | !, factorial(...) |
5!, factorial(5) |
120 |
Арифметика работает с числами без единиц, денежными суммами и величинами с единицами. Результат сохраняет валюту или единицу:
£12.50 + £4.30 даёт £16.803 * £4.50 даёт £13.50£1,000 * 1.05^3 даёт £1,157.636 times 7 даёт 42100 minus 37.5 даёт 62.5Неявное умножение — запись без *, например 2(3 + 4) или 2π. Раздел Неявное умножение объясняет, когда это допустимо.
Порядок операций
Вычисления следуют обычному школьному порядку действий:
- Скобки.
- Факториалы, например
5!. - Степени, справа налево:
2^3^2— это2^9, то есть 512. - Унарный минус, после возведения в степень:
-2^2равно −4, а(-2)^2равно 4. - Умножение, деление и
mod, слева направо. - Сложение и вычитание, слева направо.
Пропуск * не меняет порядок: в 2x^2 сначала возводится в квадрат x, затем результат удваивается, как в формуле из учебника.
Поэтому умножение выполняется до соседнего сложения — об этом легко забыть при подсчёте счёта:
£85 - £12.50 * 2 даёт £60.00(£85 - £12.50) * 2 даёт £145.00£120 / 4 / 2 даёт £15.00Если сомневаетесь, добавьте скобки. Они не помешают и сделают заметку понятнее при следующем чтении.
Знак квадратного корня относится к значению сразу после него, поэтому √9 + 16 равно 19. Чтобы извлечь корень из суммы, заключите всё выражение в скобки:
√(9 + 16) даёт 5Остатки от деления
Оператор mod возвращает остаток от деления. Он удобен при распределении предметов по группам:
eggs = 50eggs mod 6 даёт 2floor(eggs / 6) даёт 8Из пятидесяти яиц получится восемь полных коробок по шесть, и ещё два яйца останутся.
Знак % между числами тоже означает остаток, даже без пробела перед ним: 50 % 6 и 50% 6 равны 2. Если после % ничего нет, он обозначает процент (50%); см. Проценты.
Факториалы
Поставьте ! сразу после числа, имени или закрывающей скобки, чтобы вычислить факториал:
5! даёт 120runners = 4runners! даёт 243! + 2 даёт 85!=4 даёт trueФакториал вычисляется раньше соседней степени: 2^3! — это 2⁶, то есть 64. Символы ! и = подряд по-прежнему означают «не равно», как в последней строке. factorial(5) даёт тот же результат, что и 5!.
Сравнение
Операторы ==, !=, <, <=, > и >= сравнивают два значения и возвращают true или false. Они работают с числами без единиц, суммами в одной валюте и однородными величинами, даже если единицы различаются:
budget = £400spent = £365spent <= budget даёт truespent == budget даёт falsespent != budget даёт true5 km == 5,000 m даёт true90 min >= 1.5 hours даёт true2 kg < 2,500 g даёт trueПеред сравнением единицы приводятся к общему виду, поэтому 1 mile > 1.5 km даёт true. Сравнение разнородных величин, например килограммов и метров, вызывает ошибку incompatible units.
Ограничения сравнений
- Цепочки. Запись
5 < x < 10не поддерживается. Объедините два сравнения:5 < x && x < 10. - Символы Unicode. Знаки
≠,≤и≥не распознаются. Используйте!=,<=и>=. - Даты. Две даты нельзя сравнить через
<или>. Вычтите одну из другой и сравните разницу с длительностью:
deadline = 30 September 2026booked = 14 September 2026deadline - booked даёт 2 weeks 2 daysdeadline - booked >= 7 days даёт trueЛогические операторы
Объединяйте сравнения через && (оба должны быть истинны) или || (хотя бы одно должно быть истинно). Между двумя сравнениями слова and и or работают аналогично.
distance = 5 kmrun time = 27 mindistance >= 5 km && run time < 30 min даёт truedistance >= 10 km || run time < 25 min даёт falsedistance >= 10 km or run time < 30 min даёт trueЗначения true и false можно записывать непосредственно и объединять через && и ||:
true || false даёт truetrue && false даёт falseНекоторые привычные формы не поддерживаются:
- Слова
andиorработают только между сравнениями. Записьtrue and falseне подходит; используйтеtrue && false. - Оператора отрицания нет:
not trueи!trueне работают. Вместо этого сравните сfalse, например(spent > budget) == false. - Слово
orне задаёт запасное значение при ошибке:1/0 or 5не вернёт 5.
Сравнения в условных выражениях
Сравнения особенно полезны внутри if … then … else …, где от условия зависит выбранное значение:
basket = £34.50if basket >= £40 then £0 else £3.99 даёт £3.99В разделе Условия приведён полный синтаксис, включая else if, постфиксные if и unless, а также присваивание внутри ветви.
Побитовые операторы
Для целых чисел доступны побитовые операторы & (И), | (ИЛИ), xor (исключающее ИЛИ), << (сдвиг влево) и >> (сдвиг вправо). Также работают прописные слова AND, OR и XOR. Эти операции полезны прежде всего в программировании, например при работе с цветами и правами доступа к файлам.
12 & 10 даёт 812 | 10 даёт 1412 xor 10 даёт 612 AND 10 даёт 81 << 10 даёт 1,0241024 >> 3 даёт 128Результат выводится обычным числом. Добавьте to binary, in hex или to octal, чтобы увидеть его в нужной системе счисления:
0o644 | 0o111 to octal даёт 0o755colour = 0xFF8800(colour >> 8) & 0xFF даёт 136Сдвиги выполняются раньше &, | и xor, но скобки делают сложные строки, например пример с цветом, намного понятнее.
Всё вместе
Проверка месячного бюджета с арифметикой, сравнениями и логикой:
# September budgettake home = £2,400rent = £1,050bills = £230groceries = 4 * £65 даёт £260.00left over = take home - rent - bills - groceries даёт £860.00rent / take home as % даёт 43.75%left over > £500 даёт trueleft over > £500 && rent <= take home * 45% даёт trueВ groceries умножение выполняется до сложения, а в left over вычитание идёт слева направо. Последние две строки проверяют бюджет: результат остаётся true, пока остаток больше £500, а аренда не превышает 45% дохода после налогов. Как только любое из условий перестаёт выполняться, результат меняется на false.