Bigtable-подобные базы данных
Bigtable-подобные базы данных или иначе хранилища семейств колонок содержат данные, упорядоченные в виде разреженной матрицы, строки и столбцы которой используются в качестве ключей. Эти хранилища имеют много общего с документоориентированными БД - системы управления содержимым, регистрацию событий, блоги. Не стоит путать bigtable-подобные базы данных с колоночными хранилищами, которые являются, по сути, реляционными БД с раздельным хранением колонок.
Как правило, эти хранилища применяются для веб-индексирования и решения прочих задач, предполагающих огромные объемы данных.
Примерами СУБД данного типа являются: HBase, Cassandra, Hypertable, SimpleDB.
II. Практическая часть
1) Your order, please (6 kyu)
Условие задачи: реализовать функцию, которая будет сортировать слова по цифрам, которые содержатся в них самих
Решение:
2) Multiples of 3 or 5 (6 kyu)
Условие задачи: реализовать функцию, которая вернет сумму чисел, кратных 3 или 5
Решение:
3) Array.diff (6 kuy)
Условие задачи: реализовать функцию, которая будет удалять все значения из списка а, которые присутствуют в списке b
Решение:
4) Highest and lowest (7 kyu)
Условие задачи: найти в списке большее и меньшее число
Решение:
5) Ones and Zeros (7 kyu)
Условие задачи: перевести из двоичного числа в десятичное
Решение:
6) Factorial decomposition (5 kyu)
Условие задачи: вывести все простые множители факториала числа n
|
|
Решение:
7) Infix to Postfix Converter (4 kyu)
Условие задачи: перевести математическую запись в обратную польскую запись
Решение:
8) Last digit of a huge number (3 kyu)
Условие задачи: все следующие значения в листе возводить друг друга в степень
Решение:
9) If you cant sleep, just count sheep!! (8 kyu)
Условие задачи: по приходящему параметру в функцию вывести строку вида “n sheep…”
Решение:
10) Opposite number (8 kyu)
Условие задачи: сделать негативное число
Решение:
11) Проект «Разработка чат-бота для ВКонтакте»
- Задание:
- Основные моменты реализации:
Создать сообщество, получить ключ для работы с api, бот берет обычный excel-файл с расписанием всего 1 курса, парсит и получает данные. Далее должны быть выполнены функции, соответствующие заданию
- Скрины тестирования:
- Листинг
import json
import datetime
import xlrd
import vk_api
#43b41656bd06775e87b9e3fb9cff58fa235f01d3386b1e6e1aeb6b73ff1e1b4c5603c77cb80c57ea802d6
from vk_api import VkUpload
from vk_api.longpoll import VkLongPoll, VkEventType
groups_list = []
groups = {}
week_days = ["Mon","Tue", "Wed", "Thur", "Fri", "Sat"]
def excel():
book = xlrd.open_workbook("IIT-1k-17_18-vesna.xlsx")
sheet = book.sheet_by_index(0)
num_cols = sheet.ncols
num_rows = sheet.nrows
for col_index in range(num_cols):
group_cell = str(sheet.cell(1,col_index).value)
if "-17" in group_cell:
|
|
week = {"Mon": None,"Tue": None, "Wed": None, "Thur": None, "Fri": None, "Sat": None}
for k in range(6):
day = [[],[],[],[],[],[]]
for i in range (6):
for j in range(2):
subject = sheet.cell(3+j+2*i+12*k,col_index).value
lesson_type = sheet.cell(3+j+2*i+12*k,col_index+1).value
lecturer = sheet.cell(3+j+2*i+12*k,col_index+2).value
classroom = sheet.cell(3+j+2*i+12*k,col_index+3).value
lesson = {"subject":subject,"lesson_type":lesson_type,"lecturer":lecturer,"classroom": classroom}
day[i].append(lesson)
week[week_days[k]]=day
groups.update({group_cell:week})
groups_list.append(group_cell)
#print(json.dumps(groups,sort_keys=False,indent = 4, ensure_ascii = False))
def main():
vk_session = vk_api.VkApi(token='43b41656bd06775e87b9e3fb9cff58fa235f01d3386b1e6e1aeb6b73ff1e1b4c5603c77cb80c57ea802d6')
vk = vk_session.get_api()
longpoll = VkLongPoll(vk_session)
group_name = ""
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
flag = 0
if "Бот" in event.text or "-17" in event.text or "Привет" in event.text:
if "Привет" in event.text:
vk.messages.send(
user_id = event.user_id,
message = "Привет"
)
for i in range(len(groups_list)):
if groups_list[i] == event.text.upper():
if group_name == "":
|
|
group_name = groups_list[i]
vk.messages.send(
user_id = event.user_id,
message = "Я сохранил группу "+group_name
)
break
for i in range(len(groups_list)):
if "Бот " in event.text and groups_list[i] in event.text:
flag = 1
text = ""
if "Бот расписание" in event.text:
for k in range(6):
for j in range(6):
lesson = groups[groups_list[i]][week_days[k]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
else:
if "понедельник" in event.text:
for j in range(6):
lesson = groups[groups_list[i]][week_days[0]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
|
|
vk.messages.send(
user_id = event.user_id,
message = text
)
if "вторник" in event.text:
for j in range(6):
lesson = groups[groups_list[i]][week_days[1]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "среда" in event.text:
for j in range(6):
lesson = groups[groups_list[i]][week_days[2]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "четверг" in event.text:
for j in range(6):
lesson = groups[groups_list[i]][week_days[3]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "пятница" in event.text:
for j in range(6):
lesson = groups[groups_list[i]][week_days[4]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "суббота" in event.text:
for j in range(6):
lesson = groups[groups_list[i]][week_days[5]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if not group_name == "":
if flag == 0:
text = ""
if "Бот" == event.text:
for j in range(6):
lesson = groups[group_name][week_days[datetime.datetime.today().weekday()]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "Бот расписание" == event.text:
text = ""
for i in range(6):
for j in range(6):
lesson = groups[group_name][week_days[i]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text +="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
elif "Бот " in event.text:
if "понедельник" in event.text:
for j in range(6):
lesson = groups[group_name][week_days[0]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "вторник" in event.text:
for j in range(6):
lesson = groups[group_name][week_days[1]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "среда" in event.text:
for j in range(6):
lesson = groups[group_name][week_days[2]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "четверг" in event.text:
for j in range(6):
lesson = groups[group_name][week_days[3]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "пятница" in event.text:
for j in range(6):
lesson = groups[group_name][week_days[4]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
if "суббота" in event.text:
for j in range(6):
lesson = groups[group_name][week_days[5]][j][(datetime.datetime.utcnow().isocalendar()[1]+1)%2]
text += ", ".join([str(j+1),lesson["subject"],lesson["lesson_type"],lesson["lecturer"],lesson["classroom"]])+"\n"
text+="\n"
vk.messages.send(
user_id = event.user_id,
message = text
)
else:
vk.messages.send(
user_id = event.user_id,
message = "Я не знаю данной комманды :("
)
if __name__ == "__main__":
excel()
main()
IV. Заключение
За данное время, в которое выполнялись все требуемые задания, я стал лучше знать язык программирования Python. Все задания выполнялись на сайте www.codewars.com. На этом сайте я выполнял разного уровня сложности задачи, благодаря которым лучше понимал синтаксис данного языка. При том, повышая сложность, очевидно, приходилось больше читать информации про синтаксис и больше приходилось изучать различных методов. Помимо этого также теперь я знаю, как можно создать простого бота, который может парсить данные с эксель файла и работать с ними в дальнейшем. Для того, чтобы сделать бота, я понял несколько важных вещей: для начала нужно получить ключ для работы с api. Потом бот может взять обычный excel-файл, пропарсить его и получить данные. Тем самым можно сказать, что работа с какими-либо структурами облегчается в разы благодаря работе с api какого-либо приложения, либо социальной сети.
Дата добавления: 2018-08-06; просмотров: 248; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!