diff --git a/0.6_stable/main.py b/0.6_stable/main.py index db3398c..02c22ba 100644 --- a/0.6_stable/main.py +++ b/0.6_stable/main.py @@ -178,11 +178,11 @@ class Main: for i in lst: self.dish_arr.append([i[2], str(i[1]), str(i[4])]) self.max_len_name = max(self.max_len_name, len(i[2])) - print("№" + " "*(self.max_index + 1)+ "Название" + " "*(self.max_len_name - 4)\ + print("№" + " "*(len(str(self.max_index)) + 1)+ "Название" + " "*(self.max_len_name - 4)\ +"Время приготовления Краткая инструкция\ \n-------------------------------------------------------------------------------------------") for i in range(len(self.dish_arr)): - txt = str(i+1) + " "*(2+self.max_index-len(str(i))) + txt = str(len(str(self.max_index))+1) + " "*(2+self.max_index-len(str(i))) txt += self.dish_arr[i][0] + " "*(4+self.max_len_name - len(self.dish_arr[i][0])) txt += self.dish_arr[i][1] + " "*(5+19-len(self.dish_arr[i][1])) txt += self.dish_arr[i][2] diff --git a/0.7_stable/__pycache__/add_func.cpython-311.pyc b/0.7_stable/__pycache__/add_func.cpython-311.pyc index 12426f4..62768f8 100644 Binary files a/0.7_stable/__pycache__/add_func.cpython-311.pyc and b/0.7_stable/__pycache__/add_func.cpython-311.pyc differ diff --git a/0.7_stable/__pycache__/dbtable.cpython-311.pyc b/0.7_stable/__pycache__/dbtable.cpython-311.pyc index 22fefc9..4140dca 100644 Binary files a/0.7_stable/__pycache__/dbtable.cpython-311.pyc and b/0.7_stable/__pycache__/dbtable.cpython-311.pyc differ diff --git a/0.7_stable/add_func.py b/0.7_stable/add_func.py index 0b41e89..ef6ddf5 100644 --- a/0.7_stable/add_func.py +++ b/0.7_stable/add_func.py @@ -46,8 +46,8 @@ def validate_input(prompt, min_value, max_value): print("Введенное значение должно быть числом.") -test1 = 'erhwogngonwro' -test2 = '1 minute' -test3 = '2 hours 3 minutes' +# test1 = 'erhwogngonwro' +# test2 = '1 minute' +# test3 = '2 hours 3 minutes' -print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3)) \ No newline at end of file +# print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3)) \ No newline at end of file diff --git a/0.7_stable/dbtable.py b/0.7_stable/dbtable.py index d7b563a..a84f108 100644 --- a/0.7_stable/dbtable.py +++ b/0.7_stable/dbtable.py @@ -65,6 +65,7 @@ class DbTable: self.dbconn.conn.commit() except psycopg2.errors.UniqueViolation: self.dbconn.conn.rollback() + print('Такая строка уже существует. Повторите попытку') return def update(self, column, values, wh): diff --git a/0.7_stable/tables/__pycache__/dish_table.cpython-311.pyc b/0.7_stable/tables/__pycache__/dish_table.cpython-311.pyc index 2e41776..e7959f7 100644 Binary files a/0.7_stable/tables/__pycache__/dish_table.cpython-311.pyc and b/0.7_stable/tables/__pycache__/dish_table.cpython-311.pyc differ diff --git a/0.7_stable/tables/dish_table.py b/0.7_stable/tables/dish_table.py index 23d9ba9..4ebb705 100644 --- a/0.7_stable/tables/dish_table.py +++ b/0.7_stable/tables/dish_table.py @@ -80,13 +80,13 @@ class DishTable(DbTable): or(DishTable().check_by_name(ins_name)): if(ins_name.strip() == ''): - ins_name = input("Пустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ") + ins_name = input("Пустая строка. Повторите ввод! Укажите название добавляемого блюда (0 - отмена): ") if ins_name == "0": return "1" elif(len(ins_name.strip()) > 32): ins_name = input("Слишком длинная строка. Повторите ввод!\ - Укажите название удаляемого блюда (0 - отмена): ") + Укажите название добавляемого блюда (0 - отмена): ") if ins_name == "0": return "1" else: diff --git a/0.8_indev/__pycache__/add_func.cpython-311.pyc b/0.8_indev/__pycache__/add_func.cpython-311.pyc index 12426f4..d188ea8 100644 Binary files a/0.8_indev/__pycache__/add_func.cpython-311.pyc and b/0.8_indev/__pycache__/add_func.cpython-311.pyc differ diff --git a/0.8_indev/__pycache__/dbtable.cpython-311.pyc b/0.8_indev/__pycache__/dbtable.cpython-311.pyc index 22fefc9..cf5d63c 100644 Binary files a/0.8_indev/__pycache__/dbtable.cpython-311.pyc and b/0.8_indev/__pycache__/dbtable.cpython-311.pyc differ diff --git a/0.8_indev/__pycache__/texts.cpython-311.pyc b/0.8_indev/__pycache__/texts.cpython-311.pyc index 165ae1b..3de31cd 100644 Binary files a/0.8_indev/__pycache__/texts.cpython-311.pyc and b/0.8_indev/__pycache__/texts.cpython-311.pyc differ diff --git a/0.8_indev/add_func.py b/0.8_indev/add_func.py index 0b41e89..b794514 100644 --- a/0.8_indev/add_func.py +++ b/0.8_indev/add_func.py @@ -46,8 +46,27 @@ def validate_input(prompt, min_value, max_value): print("Введенное значение должно быть числом.") -test1 = 'erhwogngonwro' -test2 = '1 minute' -test3 = '2 hours 3 minutes' +# test1 = 'erhwogngonwro' +# test2 = '1 minute' +# test3 = '2 hours 3 minutes' -print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3)) \ No newline at end of file +# print(validate_time_format(test1), validate_time_format(test2), validate_time_format(test3)) + +def add_zero_before(old_index: str, max_len: str) -> str: + """Функция для "красивого" вывода индексов + + Args: + old_index (str): текущий индекс для вывода + max_len (int): максимальная длина индексов + + Returns: + new_index (str): окончательная версия индекса + """ + ln = len(old_index) + new_index = old_index[:] + for i in range(max_len-ln): + new_index = '0' + new_index + return new_index + + + \ No newline at end of file diff --git a/0.8_indev/dbtable.py b/0.8_indev/dbtable.py index d7b563a..37f4355 100644 --- a/0.8_indev/dbtable.py +++ b/0.8_indev/dbtable.py @@ -97,6 +97,24 @@ class DbTable: cur = self.dbconn.conn.cursor() cur.execute(sql) return cur.fetchall() + + def get_page(self, page_num): + """Функция для получения "страницы" из БД по её номеру. + В программе заменяет .all() для вывода информации. + + Args: + page_num (int): номер страницы, определяется пользователем. + + Returns: + lst (list): Список, содержащий в себе все строки для этой страницы. + """ + ROW_PER_PAGE = 10 + cur = self.dbconn.conn.cursor() + offset = (page_num - 1) * ROW_PER_PAGE + sql = (f"SELECT * FROM {self.table_name()} LIMIT {ROW_PER_PAGE} OFFSET {offset}") + cur.execute(sql) + return cur.fetchall() + def select_one(self, **kwargs): conditions = [] diff --git a/0.8_indev/main.py b/0.8_indev/main.py index b76fa77..224112c 100644 --- a/0.8_indev/main.py +++ b/0.8_indev/main.py @@ -1,5 +1,7 @@ import sys import texts +import math +import os # import time sys.path.append('tables') @@ -17,10 +19,16 @@ TODO: 4) UPDATE для категорий - done 5) Красивый вывод - done 6) Доделать ограничение на выбор категории - done -7) UPDATE для блюд - done -8) Постраничный вывод - indev +7) UPDATE для блюд - done 0.7 +8) Постраничный вывод - indev 0.8 - реализация через offset. +9) Реализовать отдельный просмотр(offset) +10) И отдельный вывод(offset) + FIXME: +1) Откомментировать os.cls +2) Исправить вылет при неверном вводе в самое начало(сделать выход на предыдущую менюшку) +3) При вводе текста пропуск сделать с помощью пустой строки. ''' @@ -33,33 +41,29 @@ class Main: def __init__(self): DbTable.dbconn = self.connection return - def db_init(self): cth = CathTable() d = DishTable() cth.create() d.create() return - def db_insert_somethings(self): cth = CathTable() dsh = DishTable() cth.example_insert() - dsh.example_insert() - + dsh.example_insert() def db_drop(self): cth = CathTable() d = DishTable() d.drop() cth.drop() return - def show_main_menu(self): menu = texts.show_main_menu_txt print(menu) + print('Катя и Дима хорошенькие, тюк') return - def read_next_step(self): return input("=> ").strip() @@ -75,20 +79,44 @@ class Main: return "0" else: return next_step + def show_cath(self): self.cath_id = -1 - self.cath_arr = [] menu = texts.show_cath_1txt print(menu) - lst = CathTable().all() - self.max_cath_index = (len(lst)) - for i in lst: - self.cath_arr.append(str(i[0])) + self.max_cath_index = len(CathTable().all()) + self.cath_page = 1 + lst = CathTable().get_page(self.cath_page) + action = '>' + max_page = math.ceil(self.max_cath_index/10) + while True: - for i in range(len(self.cath_arr)): - print(str(i+1) + "\t" + self.cath_arr[i]) + self.cath_arr = [] + for i in lst: + self.cath_arr.append(str(i[0])) + os.system('cls') + for i in range(len(self.cath_arr)): + print(add_func.add_zero_before(str((i+1)+(10*(self.cath_page-1))), len(str(self.max_cath_index))) + "\t" + self.cath_arr[i]) + action = input('-------------------------------------------------------------------------------------------\n\ +Для переключения между страницами используйте "<" и ">"\nКол-во записей на странице: 10\n\ +Для выхода в меню действий нажмите любую другую клавишу\n=> ') + if(action=='>'): + if(self.cath_page==max_page): + self.cath_page = 1 + else: + self.cath_page += 1 + lst = CathTable().get_page(self.cath_page) + elif(action=='<'): + if(self.cath_page==1): + self.cath_page = max_page + else: + self.cath_page -= 1 + lst = CathTable().get_page(self.cath_page) + else: + break + menu = texts.show_cath_2txt print(menu) return @@ -98,9 +126,17 @@ class Main: """ while True: if next_step == "4": # Удаление категории - x = add_func.validate_input('Введите номер удаляемой категории (0 - для отмены): ', 0, self.max_cath_index) + if(self.cath_page<(self.max_cath_index//10)): + left = ((self.cath_page-1)*10)+1 + right = left+9 + print(left) + + else: + left = 1+((self.cath_page-1)*10) + right = self.max_cath_index + x = add_func.validate_input('Введите номер удаляемой категории (0 - для отмены): ', left, right) if(x!=-1): - CathTable().delete(self.cath_arr[int(x)-1]) + CathTable().delete(self.cath_arr[(int(x)-1)-((self.cath_page-1)*10)]) return "1" elif next_step == "6": #Добавление блюда в категорию @@ -108,9 +144,16 @@ class Main: next_step = "5" elif next_step == "7":#Удаление блюда из категории - x = add_func.validate_input('Введите номер удаляемого блюда (0 - для отмены): ', 0, self.max_index) + if(self.dish_page<(self.max_index//10)): + left = ((self.dish_page-1)*10)+(self.dish_page==1) + right = left+9 + + else: + left = 1+((self.dish_page-1)*10)+(self.dish_page!=1) + right = self.max_index + x = add_func.validate_input('Введите номер удаляемого блюда (0 - для отмены): ', left, right) if(x!=-1): - DishTable().delete(self.dish_arr[int(x)-1][0]) + DishTable().delete(self.dish_arr[(int(x)-1)-((self.dish_page-1)*10)][0]) else: return "1" next_step = "5" @@ -119,14 +162,28 @@ class Main: next_step = self.show_dish_in_cath() elif next_step == "8": # Обновление названия категории - x = add_func.validate_input('Введите номер обновляемой категории (0 - для отмены): ', 0, self.max_cath_index) + if(self.cath_page<(self.max_cath_index//10)): + left = 1+((self.cath_page-1)*10) + right = left+9 + + else: + left = 1+((self.cath_page-1)*10) + right = self.max_cath_index + x = add_func.validate_input('Введите номер обновляемой категории (0 - для отмены): ', left, right) if(x!=-1): - CathTable().cath_update(self.cath_arr[int(x)-1]) + CathTable().cath_update(self.cath_arr[(int(x)-1)-((self.cath_page-1)*10)]) return "1" elif next_step == "88": - x = add_func.validate_input('Введите номер изменяемого блюда (0 - для отмены): ', 0, self.max_index) + if(self.dish_page<(self.max_index//10)): + left = 1+((self.dish_page-1)*10) + right = left+9 + + else: + left = 0+((self.dish_page-1)*10) + right = self.max_index + x = add_func.validate_input('Введите номер обновляемого блюда (0 - для отмены): ', left, right) if(x!=-1): - DishTable().update_dish(self.dish_arr[int(x)-1][0]) + DishTable().update_dish(self.dish_arr[(int(x)-1)-((self.cath_page-1)*10)][0]) else: return "1" @@ -160,38 +217,75 @@ class Main: def show_dish_in_cath(self): """Вывод всех блюд в выбранной пользователем категории """ - self.dish_arr = [] + if self.cath_id == -1: while True: - x = add_func.validate_input('Выберите номер интересуемой категории (0 - отмена): ', 0, self.max_cath_index) + if(self.cath_page<(self.max_cath_index//10)): + left = 1+((self.cath_page-1)*10) + right = left+9 + + else: + left = 1+((self.cath_page-1)*10)+(self.cath_page!=1) + right = self.max_cath_index + x = add_func.validate_input('Выберите номер интересуемой категории (0 - отмена): ', left, right) + os.system('cls') if(x!=-1): - self.cath_id = CathTable().find_by_name(self.cath_arr[x-1]) - self.cath_obj = self.cath_arr[x-1] + self.cath_id = CathTable().find_by_name(self.cath_arr[(int(x)-1)-((self.cath_page-1)*10)]) + self.cath_obj = self.cath_arr[(int(x)-1)-((self.cath_page-1)*10)] else: return "1" - print("Выбрана категория: " + self.cath_obj) print("Блюда:") - - lst = DishTable().all_by_cath_id(self.cath_id) + self.dish_page = 1 + lst = DishTable().get_page_dish(self.cath_id, self.dish_page) self.max_len_name = 0 - self.max_index = len(lst) - for i in lst: - self.dish_arr.append([i[2], str(i[1]), str(i[4])]) - self.max_len_name = max(self.max_len_name, len(i[2])) - print("№" + " "*(self.max_index + 1)+ "Название" + " "*(self.max_len_name - 4)\ - +"Время приготовления Краткая инструкция\ - \n-------------------------------------------------------------------------------------------") - for i in range(len(self.dish_arr)): - txt = str(i+1) + " "*(2+self.max_index-len(str(i))) - txt += self.dish_arr[i][0] + " "*(4+self.max_len_name - len(self.dish_arr[i][0])) - txt += self.dish_arr[i][1] + " "*(5+19-len(self.dish_arr[i][1])) - txt += self.dish_arr[i][2] - print(txt) + self.max_index = len(DishTable().all_by_cath_id(self.cath_id)) + action = '>' + max_page = math.ceil(self.max_index/10) + lst = DishTable().get_page_dish(self.cath_id, self.dish_page) + + while True: + self.dish_arr = [] + + for i in lst: + self.dish_arr.append([i[2], str(i[1]), str(i[4])]) + self.max_len_name = max(self.max_len_name, len(i[2])) + os.system('cls') + print("№" + " "*(len(str(self.max_index)) + 1)+ "Название" + " "*(self.max_len_name - 4)\ + +"Время приготовления Краткая инструкция\ + \n-------------------------------------------------------------------------------------------") + + for i in range(len(self.dish_arr)): + txt = add_func.add_zero_before(str((i+1)+(10*(self.dish_page-1))), len(str(self.max_index))) + " "*(2+len(str(self.max_index))) + txt += self.dish_arr[i][0] + " "*(4+self.max_len_name - len(self.dish_arr[i][0])) + txt += self.dish_arr[i][1] + " "*(5+19-len(self.dish_arr[i][1])) + txt += self.dish_arr[i][2] + print(txt) + action = input('-------------------------------------------------------------------------------------------\n\ + Для переключения между страницами используйте "<" и ">"\nКол-во записей на странице: 10\n\ + Для выхода в меню действий нажмите любую другую клавишу\n=> ') + if(action=='>'): + if(self.dish_page==max_page): + self.dish_page = 1 + else: + self.dish_page += 1 + lst = DishTable().get_page_dish(self.cath_id, self.dish_page) + elif(action=='<'): + if(self.dish_page==1): + self.dish_page = max_page + else: + self.dish_page -= 1 + lst = DishTable().get_page_dish(self.cath_id, self.dish_page) + else: + break + menu = texts.show_dish_in_cath_txt print(menu) return self.read_next_step() + + + def main_cycle(self): """Основной цикл программы, регулирующий порядок действий """ @@ -224,5 +318,6 @@ class Main: DbTable.dbconn.test() m = Main() + # m.test() m.main_cycle() \ No newline at end of file diff --git a/0.8_indev/tables/__pycache__/dish_table.cpython-311.pyc b/0.8_indev/tables/__pycache__/dish_table.cpython-311.pyc index 2e41776..7cc03d3 100644 Binary files a/0.8_indev/tables/__pycache__/dish_table.cpython-311.pyc and b/0.8_indev/tables/__pycache__/dish_table.cpython-311.pyc differ diff --git a/0.8_indev/tables/dish_table.py b/0.8_indev/tables/dish_table.py index 23d9ba9..a683180 100644 --- a/0.8_indev/tables/dish_table.py +++ b/0.8_indev/tables/dish_table.py @@ -36,6 +36,15 @@ class DishTable(DbTable): cur = self.dbconn.conn.cursor() cur.execute(sql) return cur.fetchall() + + def get_page_dish(self, cath_id, page_num): + row_per_page = 10 + offset = (page_num - 1) * row_per_page + sql = f"""SELECT * FROM dish WHERE cath_id = {str(cath_id)}\ + ORDER BY {", ".join(self.primary_key())} LIMIT {row_per_page} OFFSET {offset}""" + cur = self.dbconn.conn.cursor() + cur.execute(sql) + return cur.fetchall() def delete(self, val): sql = "DELETE FROM dish" @@ -80,22 +89,22 @@ class DishTable(DbTable): or(DishTable().check_by_name(ins_name)): if(ins_name.strip() == ''): - ins_name = input("Пустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ") + ins_name = input("\nПустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ") if ins_name == "0": return "1" elif(len(ins_name.strip()) > 32): - ins_name = input("Слишком длинная строка. Повторите ввод!\ + ins_name = input("\nСлишком длинная строка. Повторите ввод!\ Укажите название удаляемого блюда (0 - отмена): ") if ins_name == "0": return "1" else: - print('Такое блюдо уже существует') + print('\nТакое блюдо уже существует') ins_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ") if ins_name == "0": return "1" - ins_time = input(f'Процесс добавления блюда: {ins_name}\ + ins_time = input(f'\nПроцесс добавления блюда: {ins_name}\ \nВведите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ') while(ins_time==0)or(add_func.validate_time_format(ins_time)==False): if ins_time == "0": @@ -104,7 +113,7 @@ class DishTable(DbTable): ins_time = input('Время введено в неверном формате. Повторите попытку.\n\ Введите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ') - ins_manual = input(f'Процесс добавления блюда: {ins_name}\ + ins_manual = input(f'\nПроцесс добавления блюда: {ins_name}\ \nВведите краткую инструкцию приготовления блюда (1 - для отмены): ') if ins_manual == "0": return "1" @@ -115,50 +124,61 @@ class DishTable(DbTable): def update_dish(self, dish): print('После изменения выберите другой пункт для изменения или введите 0 для выхода') + n = dish x = -10000 obj_id = self.id_by_name(dish)[1] - while(x!=-1): - x = add_func.validate_input('Что вы хотите изменить в рецепте?\n\ + while True: + x = add_func.validate_input(f'\nВыбранное блюдо: {n}\nЧто вы хотите изменить в рецепте?\n\ 1 - Название\n2 - Время приготовления\n3 - Инструкция\n0 - для отмены\n=> ', 0, 3) if(x==1): - new_name = input(f"Текущее название {dish}.\nВведите новое название: ") + new_name = input(f"Текущее название {n}.\nВведите новое название (0 - для отмены): ") while (new_name.strip() == '')or(len(new_name.strip()) > 32)\ - or(DishTable().check_by_name(new_name)): + or(DishTable().check_by_name(new_name))or(x=='0'): + if(new_name.strip() == ''): new_name = input("Пустая строка. Повторите ввод! Укажите название блюда (0 - отмена): ") if new_name == "0": - return "1" + break + + elif(DishTable().check_by_name(new_name)): + print('Такое блюдо уже существует') + new_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ") + if new_name == "0": + break elif(len(new_name.strip()) > 32): new_name = input("Слишком длинная строка. Повторите ввод!\ Укажите название блюда (0 - отмена): ") if new_name == "0": - return "1" + break else: - print('Такое блюдо уже существует') - new_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ") - if new_name == "0": - return "1" + break + + # dish = new_name + n = new_name new_name = "'" + new_name + "'" self.update('dish_name', new_name, obj_id) elif(x==2): - new_time = input(f'Введите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ') + new_time = input(f'Введите время приготовления в формате 10 minutes/1 hour 5 minutes (0 - для отмены): ') while(new_time==0)or(add_func.validate_time_format(new_time)==False): if new_time == "0": - return "1" + break else: - new_time = input('Введите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ') + new_time = input('Введите время приготовления в формате 10 minutes/1 hour 5 minutes (0 - для отмены): ') new_time = "'" + new_time + "'" self.update('cook_time', new_time, obj_id) elif(x==3): - new_manual = input(f'Введите краткую инструкцию приготовления блюда (1 - для отмены): ') + new_manual = input(f'Введите краткую инструкцию приготовления блюда (0 - для отмены): ') if new_manual == "0": - return "1" + break new_manual = "'" + new_manual + "'" self.update('manual', new_manual, obj_id) + + elif(x==-1): + break @@ -199,4 +219,59 @@ class DishTable(DbTable): self.insert_one([9, "1 hour 20 minutes", "Том ям", "Приготовить бульон, добавить морепродукты и специи."]) self.insert_one([10, "3 hours 15 minutes", "Баранина по-гречески", "Замариновать баранину, запечь и подать с рисом."]) self.insert_one([11, "50 minutes", "Картофельные оладьи", "Приготовить картофельное пюре, сформировать оладьи и обжарить."]) + self.insert_one([1, "30 minutes", "Омлет", "Взбить яйца, добавить ингредиенты по вкусу и запечь в духовке или обжарить на сковороде."]) + self.insert_one([1, "25 minutes", "Гренки", "Нарезать хлеб, обжарить на сковороде с маслом и чесноком."]) + self.insert_one([1, "45 minutes", "Запеканка", "Смешать ингредиенты, выложить в форму и запечь в духовке."]) + self.insert_one([1, "1 hour", "Ризотто", "Обжарить лук и рис, постепенно добавлять бульон и размешивать."]) + self.insert_one([1, "20 minutes", "Тосты", "Нарезать хлеб, обжарить на сковороде или в тостере, добавить начинку."]) + self.insert_one([1, "35 minutes", "Фриттата", "Смесь яиц, овощей и других ингредиентов, запеченная в духовке."]) + self.insert_one([1, "40 minutes", "Киш", "Открытый пирог с начинкой из яиц, сыра и других ингредиентов."]) + self.insert_one([1, "1 hour 10 minutes", "Рагу", "Тушеное блюдо из мяса, овощей и специй."]) + self.insert_one([1, "50 minutes", "Каннеллони", "Трубочки из теста, фаршированные начинкой и запеченные в соусе."]) + self.insert_one([1, "30 minutes", "Крок-месьё", "Тосты с сыром, запеченные в духовке."]) + self.insert_one([1, "1 hour 20 minutes", "Мусака", "Слоеное блюдо из баклажанов, мяса и соуса бешамель."]) + self.insert_one([1, "45 minutes", "Фрикадельки", "Приготовить фарш, сформировать шарики и обжарить или потушить."]) + self.insert_one([1, "35 minutes", "Зразы", "Фаршированные рулетики из мяса или овощей."]) + self.insert_one([1, "1 hour", "Чили кон карне", "Острое блюдо из мяса, бобов и специй."]) + self.insert_one([1, "40 minutes", "Блинчики", "Приготовить тесто, испечь блины и добавить начинку."]) + self.insert_one([1, "50 minutes", "Кесадилья", "Лепешка с начинкой, запеченная с сыром."]) + self.insert_one([1, "1 hour 30 minutes", "Паэлья", "Испанское блюдо из риса, морепродуктов и овощей."]) + self.insert_one([1, "25 minutes", "Сэндвичи", "Хлеб с различными начинками и соусами."]) + self.insert_one([1, "55 minutes", "Лазанья-роллы", "Рулетики из лазаньи с начинкой и соусом."]) + self.insert_one([1, "1 hour 10 minutes", "Тефтели", "Фрикадельки в томатном соусе."]) + self.insert_one([1, "35 minutes", "Вафли", "Приготовить тесто и выпекать в вафельнице."]) + self.insert_one([1, "45 minutes", "Фахитас", "Мексиканские лепешки с начинкой из мяса, овощей и специй."]) + self.insert_one([1, "1 hour 20 minutes", "Чили син карне", "Вегетарианская версия чили кон карне."]) + self.insert_one([1, "30 minutes", "Тартины", "Открытые бутерброды с различными ингредиентами."]) + self.insert_one([1, "55 minutes", "Энчиладас", "Мексиканские лепешки, завернутые с начинкой и запеченные в соусе."]) + self.insert_one([1, "1 hour 15 minutes", "Ризотто с морепродуктами", "Ризотто с добавлением креветок, кальмаров и другими морепродуктами."]) + self.insert_one([1, "40 minutes", "Панини", "Горячие сэндвичи, приготовленные в специальном прессе."]) + self.insert_one([1, "50 minutes", "Тортилья", "Испанский омлет с картофелем и луком."]) + self.insert_one([1, "1 hour 30 minutes", "Тажин", "Марокканское блюдо, приготовленное в глиняном горшочке."]) + self.insert_one([1, "35 minutes", "Брускетта", "Хлеб, обжаренный с чесноком и помидорами."]) + self.insert_one([1, "1 hour", "Рататуй", "Овощное рагу из баклажанов, цуккини, перца и помидоров."]) + self.insert_one([1, "45 minutes", "Начос", "Чипсы с начинкой из фасоли, сыра, гуакамоле и сальсы."]) + self.insert_one([1, "1 hour 20 minutes", "Курица тикка масала", "Индийское блюдо из курицы в пряном соусе."]) + self.insert_one([1, "30 minutes", "Бутерброды", "Хлеб с различными ингредиентами и соусами."]) + self.insert_one([1, "55 minutes", "Фалафель", "Жареные шарики из нута с соусами."]) + self.insert_one([1, "1 hour 15 minutes", "Чана масала", "Индийское блюдо из нута в пряном соусе."]) + self.insert_one([1, "40 minutes", "Кимчи-боул", "Миска с рисом, кимчи и другими ингредиентами."]) + self.insert_one([1, "50 minutes", "Такос", "Мексиканские лепешки с начинкой из мяса, овощей и соусов."]) + self.insert_one([1, "1 hour 30 minutes", "Цуккини-лазанья", "Лазанья с использованием цуккини вместо теста."]) + self.insert_one([1, "35 minutes", "Брускетта с авокадо", "Хлеб с авокадо, помидорами и специями."]) + self.insert_one([1, "1 hour", "Чана масала с цветной капустой", "Индийское блюдо из цветной капусты в пряном соусе."]) + self.insert_one([1, "45 minutes", "Баос", "Мягкие булочки с начинкой из свинины, огурцов и соусов."]) + self.insert_one([1, "1 hour 20 minutes", "Пад-тай", "Тайская лапша с яйцом, креветками и овощами."]) + self.insert_one([1, "30 minutes", "Авокадо-тосты", "Тосты с авокадо, яйцом и другими ингредиентами."]) + self.insert_one([1, "55 minutes", "Кимчи-чигэ", "Острый корейский суп с кимчи и свининой."]) + self.insert_one([1, "1 hour 15 minutes", "Буррито-боул", "Миска с рисом, фасолью, мясом, овощами и соусами."]) + self.insert_one([1, "40 minutes", "Баклажаны по-гречески", "Запеченные баклажаны с томатным соусом и сыром."]) + self.insert_one([1, "50 minutes", "Том-ям", "Острый тайский суп с креветками и грибами."]) + self.insert_one([1, "1 hour 30 minutes", "Веганский пастуший пирог", "Пастуший пирог с растительными ингредиентами."]) + self.insert_one([1, "35 minutes", "Сэндвич с авокадо и яйцом", "Бутерброд с авокадо, яйцом и другими ингредиентами."]) + self.insert_one([1, "1 hour", "Карри с тофу и овощами", "Тайское карри с тофу и смесью овощей."]) + self.insert_one([1, "45 minutes", "Кимчи-фритата", "Фриттата с добавлением кимчи и других ингредиентов."]) + self.insert_one([1, "1 hour 20 minutes", "Паста с песто из авокадо", "Паста с соусом из авокадо, базилика и сыра."]) + self.insert_one([1, "30 minutes", "Яичница с авокадо", "Яичница с добавлением авокадо и других ингредиентов."]) + self.insert_one([1, "55 minutes", "Веганский пад-тай", "Пад-тай с использованием растительных ингредиентов."]) return \ No newline at end of file diff --git a/0.8_indev/test.py b/0.8_indev/test.py index 0a318aa..5b1e75e 100644 --- a/0.8_indev/test.py +++ b/0.8_indev/test.py @@ -1 +1,10 @@ -print(len("\t")) \ No newline at end of file + + +import os + + +print('До очистки') +# Для Windows +os.system('cls') + +print('после очистки') \ No newline at end of file