Калькулятор

Как высчитать математическое выражение с использованием переменных и математических функций

В боте можно производить любые арифметические вычисления. Делается это в поле "Назначение переменных при переходе"

При работе с калькулятором название переменной не может начинаться с цифры. Нельзя: <1_шаг>, а надо <шаг_1>.

Название переменной не может состоять из двух слов, используйте для разделения символ нижнего подчеркивания "_". Нельзя <Имя клиента>, а надо <Имя_клиента>

Как использовать в конструкторе.

Посчитать значение можно в поле: "Назначение переменных при переходе" (Рисунок 1)

Рисунок 1
Рисунок 2

Переменные можно записывать просто названием или через #{}. Все переменные автоматически будут приводится к числам с плавающей запятой.

Важно! Логические условия с переменными необходимо писать в поле переменная для сравнения! Например, на рисунке ниже переход по стрелке осуществиться, если переменная НОМЕРТЕЛЕФОНА не заполнена:

Рисунок 2

Константы:

"E": число e

"PI": число PI

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

"+": сложение

"-"': вычитание

"*" умножение

"/": деление

'"%'": остаток от деления

"^" "**": возведение в степень

"==" "!=" ">" "<" ">=" "<=": операторы сравнения

"and" "AND" "&&": логическое И

"or" "OR" "||": логическое ИЛИ

Поддерживаемые функции:

"random": случайное число. 2 параметра: нижняя граница и верхняя. Пример: random(-10,10)

"fac": факториал. 1 параметр: число

"log": логарифм. 2 параметра: число и база(по умолчанию e).

"min": минимальное число. неограниченно параметров. каждый параметр число. Пример: min(4, 2, 9, 6)

"max": максимальное число. неограниченно параметров. каждый параметр число. Пример: max(4, 2, 9, 6)

"int": приведение к целому числу. При этом дробная часть просто отсекается. Пример: int(1.8)

"round": математическое округление числа. Пример: round(1.8). Разница между "int" и "round" показана на Рисунке 3:

Рисунок 3

"float": приведение к числу с плавающей запятой.

"pyt": эквивалент корня из (a a + b b)

"pow": возведение числа в степень. 2 параметра: число и степень. Пример: pow(5, 2)

"sin" "cos" "tan" "asin" "acos" "atan" "atan2": тригонометрические функции

"len" вернет количество символов в строке. Пример: len("как прекрасен этот мир!"). Результат работы представлен на Рисунке 4:

Рисунок 4

"concat": конкатинация (сложение) строк, преданных в параметр.

"sqrt": квадратный корень. 1 параметр: число

"floor": целая часть от числа

"ceil": округление к большему

"abs": абсолютное значение(приведение к положительному числу)

"exp": возведение е в степень параметра

"normalizePhone": приводит номер телефона к стандартному виду. Убирает все кроме цифр и, если телефон начинается с 8, меняет ее на 7. Пример: normalizePhone("+7978-999-99-99"). Результат работы представлен на Рисунке 5:

Рисунок 5

"replace": заменить вхождения строки в строку на другую строку. Принимает 4 параметра: строка в которой будет происходить замена, что заменить, на что заменить, сколько раз заменить(не обязательный параметр). Пример: replace("wwww2222ww", "w", "e", 1). Результат: ewww2222ww. Пример использования на рисунках ниже:

"if": тернарный оператор. 3 параметра: условие, значение если условие верно, значение если условие ложно

Чтобы проверить не пустое ли значение переменной (не равно ли оно None) используйте следующую формулу: status = if(value, 1, 0) Тогда, если значение не пустое, то status станет равным 1, а если пустое, то станет равным 0. Далее можете сравнивать значение status в условиях для продолжения воронки.

Например, это может понадобиться при получении данных со стороннего ресурса через запросы.

Пример: ДНИМОЛЧАНИЯ_2 = if(ДНИМОЛЧАНИЯ_2 == 1, 1, 0). В таком случае, если существует переменная ДНИМОЛЧАНИЯ_2 со значением 1, то ее значение так и останется 1, а если она не существует, то будет 0. Удобно использовать перед математическими операциями, чтобы подстраховаться от пустых значений переменных. Или еще пример ИмяКлиента = if(#{ИмяКлиента} == 1, Р1, if(#{ИмяКлиента} == 2, Р2, if(#{ИмяКлиента} == 3, Р3, 7))), где Р1, Р2, Р3 - переменные

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

Например: Сумма_Заказа = round(if(Количество >=100, if(Количество >=200, if(Количество >=300, if(Количество >=400, if(Количество >=500, if(Количество >=1000, if(Количество >=2000, if(Количество >=3000, if(Количество >=5000, 25*Количество, 30*Количество), 35*Количество), 40*Количество), 45*Количество), 50*Количество), 55*Количество), 60*Количество), 65*Количество), "Не могу посчитать... Вы ошиблись где-то при оформлении заказа. Попробуйте еще раз с самого начала.") 100) / 10

Максимальная длина выражения: 1000 символов

Результат работы такой формулы представлен на Рисунке 6, а пример заполнения полей - на Рисунке 7:

Рисунок 6
Рисунок 7

Работа с буквами колонок

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

Пример:

Результат работы: