Когда, например, в тексте сообщения попадается выражение в двойных фигурных скобках {{ }}, бот вычисляет выражение внутри скобок и подставляет его значение в текст сообщения.
Например, значением выражения 2 * 2 является число 4, а значением выражения "привет" — строка привет.
Примеры синтаксиса
Символом >>> в примерах ниже отмечен ввод пользователя, а на строку ниже указан результат вычисления этого выражения.
Символом # отмечены комментарии (пояснения) к коду.
Арифметика
1
>>>2*2
2
4
3
4
>>>2**(4+10/5)
5
64
Copied!
Переменные
Переменные позволяют хранить данные пользователей.
Переменные делятся на типы: числа, строки, массивы и словари.
От типа переменной зависит набор действий, который можно с ней выполнить. Например, числа можно сравнивать (>, <, >=, <=, ==, !=), делить и умножать. Строки, можно только складывать.
Имена переменных в боте (специальные, локальные и глобальные) начинаются и заканчиваются со знака процента, например, %сообщение%. С точки зрения SQ эти проценты -- часть имени переменной, а создавать новые временные переменные в самом SQ можно без значков процента, например, x = 10.
Операции сравнения
1
>>> x =10
2
>>> x >0
3
True
4
5
>>> x <=0
6
False
7
8
>>> x ==10
9
True
10
11
>>> x +=2
12
>>> x
13
12
14
15
>>> x *=2
16
>>> x
17
24
18
19
>>> y =0
20
>>> x ==0and y >0or x !=0and y <0
21
False
22
23
>>>not(x ==0and y >0or x !=0and y <0)
24
True
25
26
# допустим, что %пол% равен "женский"
27
>>>'да'if%пол%=='женский'else'нет'
28
'да'
29
30
# допустим, что %сообщение% равно "привет мир"
31
>>>'прив'in%сообщение%
32
True
33
34
>>>' 'in%сообщение%
35
True
36
37
>>>'пока'notin%сообщение%
38
True
Copied!
Вызов функций
Функции позволяют преобразовывать данные, например, получить длину строки, сгенерировать случайное число или добавить элемент в массив.
В SQ существует 3 варианта вызова функций: через точку, через пайп (|) и явно -- они взаимозаменяемые и равноценные.
1
>>>'привет'|len
2
6
3
4
>>>len('привет')
5
6
6
7
>>>'привет'.len()
8
6
Copied!
Пара примеров:
1
# предположим, %сообщение% равно "привет мир"
2
>>>%сообщение%.startswith('привет')
3
True
4
5
>>>%сообщение%.endswith('привет')
6
False
7
8
>>>%сообщение%.endswith('мир')
9
True
10
11
>>>round(0.23)
12
0
13
14
>>>round(0.23,1)
15
0.2
16
17
>>>12345678| pretty
18
12345678
19
20
# примечание: \ служит для экранирования кавычки в строке
21
>>>12345678| pretty('\'')
22
12'345'678
23
24
>>> rand([1,2,3])
25
1
Copied!
Работа с массивами
Массивы позволяют хранить несколько значений в одной переменной. Например, можно хранить список покупок клиента.
1
>>> корзина =[]
2
>>> корзина.push('хлеб')
3
>>> корзина.push('греча')
4
>>> корзина
5
['хлеб','греча']
6
7
>>>'хлеб'in корзина
8
True
9
10
>>>'сыр'in корзина
11
False
12
13
>>> корзина | pretty('\n')
14
хлеб
15
греча
Copied!
Словари
Словарь похож на массив, но он позволяет запоминать сопоставление одного элемента — другому. Например, количество товара в корзине.
1
>>> корзина ={}
2
>>> корзина['хлеб']=3
3
>>> корзина['греча']=10
4
>>> корзина
5
{'хлеб':3,'греча':10}
6
7
>>>'хлеб'in корзина
8
True
9
10
>>>'сыр'in корзина
11
False
12
13
>>> корзина | pretty
14
хлеб:3
15
греча:10
Copied!
Функциональное программирование
Это сложный для понимания раздел, если вы не были ранее знакомы с программированием. Вполне возможно, что вы можете пропустить этот раздел)
Лямбды (лямбда-выражения)
Лямбда (lambda) — анонимная функция.
В SQ нет возможности объявлять свои функции, но для некоторых задач, вроде преобразования массивов, фильтрации и сортировки можно использовать лямбда-выражения.
Синтаксис
Давайте для примера рассмотрим функцию, которая принимает 3 аргумента: a, b, c и возвращает их сумму:
1
a, b, c => a + b + c
Copied!
Таким образом, лямбда-выражение состоит их 2 частей: списка аргументов (до стрелки) и выражения (после стрелки). Результат выражения вернётся при вызове этой функции.
Пример
1
>>> корзина ={}
2
>>> корзина['хлеб']=3
3
>>> корзина['греча']=10
4
5
# выведем словарь в нужном нам формате
6
>>> корзина |map((k, v)=> k +' - '+ v +' кг')| join
7
хлеб -3 кг
8
греча -10 кг
Copied!
Тут мы использовали функцию map(), в которую передали в качестве аргумента нашу лямбду. Функция map() пройдёт по всем парам ключ-значение (k, v) в словаре корзина и вместо него вернёт строку — результат сложения k, дефиса, v и слова "кг".