mirror of
https://github.com/ada-dmitry/lab6.git
synced 2026-09-24 01:10:15 +00:00
1.0 project! Allow to merge
This commit is contained in:
Binary file not shown.
+59
-20
@@ -1,25 +1,62 @@
|
|||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
|
|
||||||
def validate_time_format(input_str):
|
def input_time_format(name):
|
||||||
"""
|
time = []
|
||||||
Функция проверки подходящего формата для ввода времени в interval
|
output = ''
|
||||||
|
print(f'Процесс добавления блюда: {name}\nВведите время приготовления сначала в часах, потом в минутах')
|
||||||
|
|
||||||
Args:
|
while True:
|
||||||
input_str (str): входная строка для проверки
|
ins_time = validate_input(f'Введите кол-во часов [0 <= x <= 23] (-1 - для отмены): ',\
|
||||||
|
0, 23)
|
||||||
|
if(ins_time==''):
|
||||||
|
return -1
|
||||||
|
else:
|
||||||
|
time.append(ins_time)
|
||||||
|
break
|
||||||
|
|
||||||
Returns:
|
while True:
|
||||||
bool: Булевое значение, которое характеризует валидность вводимых строк
|
ins_time = validate_input(f'Введите кол-во минут [0 <= x <= 59] (-1 - для отмены): ',\
|
||||||
"""
|
0, 59)
|
||||||
# Регулярное выражение для проверки формата
|
if(ins_time==''):
|
||||||
pattern = re.compile(r"""^(-)?(?:(?P<hour>d+):)?(?P<minute>d+):(?P<second>d+(.d+)?)$""")
|
return -1
|
||||||
# Проверка соответствия регулярному выражению
|
else:
|
||||||
match = re.match(pattern, input_str)
|
time.append(ins_time)
|
||||||
|
break
|
||||||
|
if(time[0]==1):
|
||||||
|
output += f"1 hour "
|
||||||
|
elif(time[0]>1):
|
||||||
|
output += f"{time[0]} hours "
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
if(time[1]==1):
|
||||||
|
output += f"1 minute"
|
||||||
|
elif(time[1]>1):
|
||||||
|
output += f"{time[0]} minutes"
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
return output
|
||||||
|
|
||||||
if match:
|
# def validate_time_format(input_str):
|
||||||
return True
|
|
||||||
# Если формат некорректный, возвращаем False
|
# """
|
||||||
return False
|
# Функция проверки подходящего формата для ввода времени в interval
|
||||||
|
|
||||||
|
# Args:
|
||||||
|
# input_str (str): входная строка для проверки
|
||||||
|
|
||||||
|
# Returns:
|
||||||
|
# bool: Булевое значение, которое характеризует валидность вводимых строк
|
||||||
|
# """
|
||||||
|
# # Регулярное выражение для проверки формата
|
||||||
|
# pattern = re.compile(r"""^(-)?(?:(?P<hour>d+):)?(?P<minute>d+):(?P<second>d+(.d+)?)$""")
|
||||||
|
# # Проверка соответствия регулярному выражению
|
||||||
|
# match = re.match(pattern, input_str)
|
||||||
|
|
||||||
|
# if match:
|
||||||
|
# return True
|
||||||
|
# # Если формат некорректный, возвращаем False
|
||||||
|
# return False
|
||||||
|
|
||||||
def validate_input(prompt, min_value, max_value):
|
def validate_input(prompt, min_value, max_value):
|
||||||
"""Проверка ввода для выбора номера строки
|
"""Проверка ввода для выбора номера строки
|
||||||
@@ -33,12 +70,12 @@ def validate_input(prompt, min_value, max_value):
|
|||||||
int: Либо число, введенное пользователем, либо -1 для выхода
|
int: Либо число, введенное пользователем, либо -1 для выхода
|
||||||
"""
|
"""
|
||||||
while True:
|
while True:
|
||||||
user_input = input(prompt)
|
user_input = input(prompt).strip()
|
||||||
try:
|
try:
|
||||||
value = int(user_input)
|
value = int(user_input)
|
||||||
if min_value <= value <= max_value and value != 0:
|
if min_value <= value <= max_value and value != -1:
|
||||||
return value
|
return value
|
||||||
elif value == 0:
|
elif value == -1:
|
||||||
return -1
|
return -1
|
||||||
else:
|
else:
|
||||||
print(f"Введенное значение должно быть в диапазоне от {min_value} до {max_value}")
|
print(f"Введенное значение должно быть в диапазоне от {min_value} до {max_value}")
|
||||||
@@ -46,6 +83,8 @@ def validate_input(prompt, min_value, max_value):
|
|||||||
print("Введенное значение должно быть числом.")
|
print("Введенное значение должно быть числом.")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# test1 = 'erhwogngonwro'
|
# test1 = 'erhwogngonwro'
|
||||||
# test2 = '1 minute'
|
# test2 = '1 minute'
|
||||||
# test3 = '2 hours 3 minutes'
|
# test3 = '2 hours 3 minutes'
|
||||||
@@ -71,5 +110,5 @@ def add_zero_before(old_index: str, max_len: str) -> str:
|
|||||||
|
|
||||||
def cls():
|
def cls():
|
||||||
# Закомментировать строку ниже, если нужно выключить очистку терминала
|
# Закомментировать строку ниже, если нужно выключить очистку терминала
|
||||||
os.system('cls')
|
# os.system('cls')
|
||||||
return
|
return
|
||||||
+40
-24
@@ -97,6 +97,7 @@ class Main:
|
|||||||
return next_step
|
return next_step
|
||||||
|
|
||||||
def show_page_cath(self):
|
def show_page_cath(self):
|
||||||
|
|
||||||
menu = """Просмотр списка категорий!
|
menu = """Просмотр списка категорий!
|
||||||
№\tНазвание\n-------------------------------------------------------------------------------------------"""
|
№\tНазвание\n-------------------------------------------------------------------------------------------"""
|
||||||
|
|
||||||
@@ -107,14 +108,14 @@ class Main:
|
|||||||
while True:
|
while True:
|
||||||
cath_arr = CathTable().get_cath_page(cath_page)
|
cath_arr = CathTable().get_cath_page(cath_page)
|
||||||
add_func.cls()
|
add_func.cls()
|
||||||
print(menu)
|
|
||||||
|
|
||||||
|
print(menu)
|
||||||
for i in range(len(cath_arr)):
|
for i in range(len(cath_arr)):
|
||||||
print(add_func.add_zero_before(cath_arr[i][0],\
|
print(add_func.add_zero_before(cath_arr[i][0],\
|
||||||
len(str(self.max_cath_index))) + "\t" + cath_arr[i][1])
|
len(str(self.max_cath_index))) + "\t" + cath_arr[i][1])
|
||||||
|
|
||||||
action = input('-------------------------------------------------------------------------------------------\n\
|
action = input('-------------------------------------------------------------------------------------------\n\
|
||||||
Для переключения между страницами используйте "<" и ">"\nКол-во записей на странице: 10\n\
|
Для переключения между страницами используйте "<" и ">"\n\
|
||||||
Для выхода в меню действий нажмите любую другую клавишу\n=> ')
|
Для выхода в меню действий нажмите любую другую клавишу\n=> ')
|
||||||
|
|
||||||
if(action=='>'):
|
if(action=='>'):
|
||||||
@@ -148,50 +149,65 @@ class Main:
|
|||||||
print(menu)
|
print(menu)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def after_show_cath(self, next_step):
|
def after_show_cath(self, next_step):
|
||||||
"""Выбор действий после вывода категорий
|
"""Выбор действий после вывода категорий
|
||||||
"""
|
"""
|
||||||
while True:
|
while True:
|
||||||
if next_step == "4": # Удаление категории
|
if next_step == "4": # Удаление категории
|
||||||
left = 0
|
left = 1
|
||||||
right = self.max_cath_index
|
right = self.max_cath_index
|
||||||
x = add_func.validate_input('Введите номер удаляемой категории (0 - для отмены): ', left, right)
|
x = add_func.validate_input('Введите номер удаляемой категории (-1 - отмена): ', left, right)
|
||||||
if(x!=-1):
|
if(x!=-1):
|
||||||
CathTable().delete(CathTable().get_cath_from_page(x).get("id"))
|
CathTable().delete(CathTable().get_cath_from_page(x).get("id"))
|
||||||
return "1"
|
return "1"
|
||||||
|
|
||||||
elif next_step == "6": #Добавление блюда в категорию
|
elif next_step == "6": #Добавление блюда в категорию
|
||||||
DishTable().insert_dishone(self.cath_id)
|
if(self.cath_id != -1):
|
||||||
next_step = "5"
|
DishTable().insert_dishone(self.cath_id)
|
||||||
|
next_step = "5"
|
||||||
|
else:
|
||||||
|
print("Сначала выберите категорию")
|
||||||
|
return "1"
|
||||||
|
|
||||||
elif next_step == "7":#Удаление блюда из категории
|
elif next_step == "7":#Удаление блюда из категории
|
||||||
left = 0
|
if(self.cath_id != -1):
|
||||||
right = self.max_dish_index
|
left = 1
|
||||||
x = add_func.validate_input('Введите номер удаляемого блюда (0 - для отмены): ', left, right)
|
right = self.max_dish_index
|
||||||
if(x!=-1):
|
x = add_func.validate_input('Введите номер удаляемого блюда (-1 - отмена): ', left, right)
|
||||||
DishTable().delete(DishTable().get_dish_from_page(x).get("id"))
|
if(x!=-1):
|
||||||
|
DishTable().delete(DishTable().get_dish_from_page(self.cath_id, x).get("id"))
|
||||||
|
return "1"
|
||||||
|
else:
|
||||||
|
next_step = "5"
|
||||||
|
return "1"
|
||||||
else:
|
else:
|
||||||
|
print("Сначала выберите категорию")
|
||||||
return "1"
|
return "1"
|
||||||
next_step = "5"
|
|
||||||
|
|
||||||
elif next_step == "5":
|
elif next_step == "5":
|
||||||
next_step = self.show_dish_in_cath()
|
next_step = self.show_dish_in_cath()
|
||||||
|
|
||||||
elif next_step == "8": # Обновление названия категории
|
elif next_step == "8": # Обновление названия категории
|
||||||
left = 0
|
left = 1
|
||||||
right = self.max_cath_index
|
right = self.max_cath_index
|
||||||
x = add_func.validate_input('Введите номер обновляемой категории (0 - для отмены): ', left, right)
|
x = add_func.validate_input('Введите номер обновляемой категории (-1 - отмена): ', left, right)
|
||||||
if(x!=-1):
|
if(x!=-1):
|
||||||
CathTable().cath_update(CathTable().get_cath_from_page(x).get("cath_name"))
|
CathTable().cath_update(CathTable().get_cath_from_page(x).get("cath_name"))
|
||||||
return "1"
|
return "1"
|
||||||
|
|
||||||
elif next_step == "88": # Обновление блюда
|
elif next_step == "88": # Обновление блюда
|
||||||
left = 0
|
if(self.cath_id != -1):
|
||||||
right = self.max_dish_index
|
left = 1
|
||||||
x = add_func.validate_input('Введите номер обновляемого блюда (0 - для отмены): ', left, right)
|
right = self.max_dish_index
|
||||||
if(x!=-1):
|
x = add_func.validate_input('Введите номер обновляемого блюда (-1 - отмена): ', left, right)
|
||||||
DishTable().update_dish(DishTable().get_dish_from_page(x))
|
if(x!=-1):
|
||||||
|
DishTable().update_dish(DishTable().get_dish_from_page(self.cath_id, x))
|
||||||
|
return "1"
|
||||||
|
else:
|
||||||
|
return "1"
|
||||||
else:
|
else:
|
||||||
|
print("Сначала выберите категорию")
|
||||||
return "1"
|
return "1"
|
||||||
|
|
||||||
|
|
||||||
@@ -213,7 +229,7 @@ class Main:
|
|||||||
data = input("Такое название уже существует! Введите название заново (enter - отмена): ").strip()
|
data = input("Такое название уже существует! Введите название заново (enter - отмена): ").strip()
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
CathTable().insert_one(data)
|
CathTable().insert_one([data])
|
||||||
return
|
return
|
||||||
|
|
||||||
def show_dish_page(self):
|
def show_dish_page(self):
|
||||||
@@ -233,7 +249,7 @@ class Main:
|
|||||||
dish_arr.append([str(i[2]), str(i[4]), str(i[5])])
|
dish_arr.append([str(i[2]), str(i[4]), str(i[5])])
|
||||||
self.max_len_name = max(self.max_len_name, len(i[2]))
|
self.max_len_name = max(self.max_len_name, len(i[2]))
|
||||||
add_func.cls()
|
add_func.cls()
|
||||||
print("№" + " "*(len(str(self.max_dish_index)) + 1)+ "Название" + " "*(self.max_len_name - 4)\
|
print("№" + " "*(len(str(self.max_dish_index)) + 1)+ "Название" + " " + " "*(self.max_len_name - 4)\
|
||||||
+"Время приготовления Краткая инструкция\
|
+"Время приготовления Краткая инструкция\
|
||||||
\n-------------------------------------------------------------------------------------------")
|
\n-------------------------------------------------------------------------------------------")
|
||||||
|
|
||||||
@@ -245,7 +261,7 @@ class Main:
|
|||||||
txt += dish_arr[i][2]
|
txt += dish_arr[i][2]
|
||||||
print(txt)
|
print(txt)
|
||||||
action = input('-------------------------------------------------------------------------------------------\n\
|
action = input('-------------------------------------------------------------------------------------------\n\
|
||||||
Для переключения между страницами используйте "<" и ">"\nКол-во записей на странице: 10\n\
|
Для переключения между страницами используйте "<" и ">"\n\
|
||||||
Для выхода в меню действий нажмите любую другую клавишу\n=> ')
|
Для выхода в меню действий нажмите любую другую клавишу\n=> ')
|
||||||
if(action=='>'):
|
if(action=='>'):
|
||||||
if(dish_page==max_page):
|
if(dish_page==max_page):
|
||||||
@@ -267,9 +283,9 @@ class Main:
|
|||||||
"""
|
"""
|
||||||
if self.cath_id == -1:
|
if self.cath_id == -1:
|
||||||
while True:
|
while True:
|
||||||
left = 0
|
left = 1
|
||||||
right = self.max_cath_index
|
right = self.max_cath_index
|
||||||
x = add_func.validate_input('Выберите номер интересуемой категории (0 - отмена): ', left, right)
|
x = add_func.validate_input('Выберите номер интересуемой категории (-1 - отмена): ', left, right)
|
||||||
add_func.cls()
|
add_func.cls()
|
||||||
if(x!=-1):
|
if(x!=-1):
|
||||||
self.cath = CathTable().get_cath_from_page(x)
|
self.cath = CathTable().get_cath_from_page(x)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -58,8 +58,8 @@ class DishTable(DbTable):
|
|||||||
cur.execute(sql)
|
cur.execute(sql)
|
||||||
return int(cur.fetchone()[0])
|
return int(cur.fetchone()[0])
|
||||||
|
|
||||||
def get_dish_from_page(self, row_num):
|
def get_dish_from_page(self, cath_id, row_num):
|
||||||
arr = self.get_dish_page(math.ceil(row_num/ROW_PER_PAGE), self.cath)
|
arr = self.get_dish_page(cath_id, math.ceil(row_num/ROW_PER_PAGE))
|
||||||
row = dict()
|
row = dict()
|
||||||
for i in arr:
|
for i in arr:
|
||||||
if(int(i[0]) == row_num):
|
if(int(i[0]) == row_num):
|
||||||
@@ -128,32 +128,18 @@ class DishTable(DbTable):
|
|||||||
return str(result)
|
return str(result)
|
||||||
|
|
||||||
def insert_dishone(self, cath_id):
|
def insert_dishone(self, cath_id):
|
||||||
|
while True:
|
||||||
ins_name = input('Введите название добавляемого блюда (1 - для отмены): ').strip()
|
ins_name = input('Введите название добавляемого блюда (enter - для отмены): ').strip()
|
||||||
|
|
||||||
while (ins_name == '')or(len(ins_name) > 32)\
|
|
||||||
or(DishTable().check_by_name(ins_name)):
|
|
||||||
|
|
||||||
if(len(ins_name) > 32):
|
if(len(ins_name) > 32):
|
||||||
ins_name = input("\nСлишком длинная строка. Повторите ввод!\
|
print("Слишком длинная строка. Повторите ввод!")
|
||||||
Укажите название добавляемого блюда (enter - отмена): ").strip()
|
elif(DishTable().check_by_name(ins_name)):
|
||||||
if ins_name == "":
|
|
||||||
return "1"
|
|
||||||
else:
|
|
||||||
print('\nТакое блюдо уже существует')
|
print('\nТакое блюдо уже существует')
|
||||||
ins_name = input("Повторите ввод! Укажите название блюда (enter - отмена): ").strip()
|
elif(ins_name == ""):
|
||||||
if ins_name == "":
|
|
||||||
return "1"
|
|
||||||
|
|
||||||
ins_time = input(f'\nПроцесс добавления блюда: {ins_name}\
|
|
||||||
\nВведите время приготовления в формате 10 minutes/1 hour 5 minutes (enter - для отмены): ').strip()
|
|
||||||
if(ins_time==''):
|
|
||||||
return "1"
|
|
||||||
while(add_func.validate_time_format(ins_time)==False):
|
|
||||||
ins_time = input('Время введено в неверном формате. Повторите попытку.\n\
|
|
||||||
Введите время приготовления в формате 10 minutes/1 hour 5 minutes (enter - для отмены): ').strip()
|
|
||||||
if(ins_time==''):
|
|
||||||
return "1"
|
return "1"
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
|
ins_time = add_func.input_time_format(ins_name)
|
||||||
|
|
||||||
ins_manual = input(f'\nПроцесс добавления блюда: {ins_name}\
|
ins_manual = input(f'\nПроцесс добавления блюда: {ins_name}\
|
||||||
\nВведите краткую инструкцию приготовления блюда (enter - для отмены): ').strip()
|
\nВведите краткую инструкцию приготовления блюда (enter - для отмены): ').strip()
|
||||||
@@ -170,7 +156,7 @@ class DishTable(DbTable):
|
|||||||
tmp = dish_name
|
tmp = dish_name
|
||||||
while True:
|
while True:
|
||||||
x = add_func.validate_input(f'\nВыбранное блюдо: {tmp}\nЧто вы хотите изменить в рецепте?\n\
|
x = add_func.validate_input(f'\nВыбранное блюдо: {tmp}\nЧто вы хотите изменить в рецепте?\n\
|
||||||
1 - Название\n2 - Время приготовления\n3 - Инструкция\n0 - для отмены\n=> ', 0, 3)
|
1 - Название\n2 - Время приготовления\n3 - Инструкция\n-1 - для отмены\n=> ', 1, 3)
|
||||||
|
|
||||||
if(x==1):
|
if(x==1):
|
||||||
new_name = input(f"Текущее название {tmp}.\nВведите новое название (enter - для отмены): ")
|
new_name = input(f"Текущее название {tmp}.\nВведите новое название (enter - для отмены): ")
|
||||||
@@ -191,15 +177,11 @@ class DishTable(DbTable):
|
|||||||
self.update('dish_name', new_name, dish_id)
|
self.update('dish_name', new_name, dish_id)
|
||||||
|
|
||||||
elif(x==2):
|
elif(x==2):
|
||||||
new_time = input(f'Введите время приготовления в формате 10 minutes/1 hour 5 minutes (enter - для отмены): ')
|
new_time = add_func.input_time_format(tmp)
|
||||||
while(new_time=='')or(add_func.validate_time_format(new_time)==False):
|
if(new_time != -1):
|
||||||
if new_time == '':
|
self.update('cook_time', new_time, dish_id)
|
||||||
break
|
else:
|
||||||
else:
|
break
|
||||||
new_time = input('Введите время приготовления в формате 10 minutes/1 hour 5 minutes\
|
|
||||||
(enter - для отмены): ')
|
|
||||||
new_time = "'" + new_time + "'"
|
|
||||||
self.update('cook_time', new_time, dish_id)
|
|
||||||
|
|
||||||
elif(x==3):
|
elif(x==3):
|
||||||
new_manual = input(f'Введите краткую инструкцию приготовления блюда (enter - для отмены): ')
|
new_manual = input(f'Введите краткую инструкцию приготовления блюда (enter - для отмены): ')
|
||||||
|
|||||||
+35
-55
@@ -1,63 +1,43 @@
|
|||||||
# a = dict()
|
# # a = dict()
|
||||||
|
|
||||||
# for i in range(1, 41, 2):
|
# # for i in range(1, 41, 2):
|
||||||
# for j in range(2, 41, 2):
|
# # for j in range(2, 41, 2):
|
||||||
# a[f"{i}"] = f"{j}"
|
# # a[f"{i}"] = f"{j}"
|
||||||
|
|
||||||
# print(a)
|
# # print(a)
|
||||||
|
|
||||||
|
# # import psycopg2
|
||||||
|
# # from psycopg2.extras import Interval
|
||||||
|
|
||||||
|
# # def check_interval(value):
|
||||||
|
# # try:
|
||||||
|
# # # Попытка преобразования значения в объект Interval
|
||||||
|
# # interval_obj = Interval(value)
|
||||||
|
# # # Если преобразование успешно, значение относится к типу Interval
|
||||||
|
# # return isinstance(interval_obj, Interval)
|
||||||
|
# # except (ValueError, TypeError):
|
||||||
|
# # # Если преобразование не удалось, значение не относится к типу Interval
|
||||||
|
# # return False
|
||||||
|
|
||||||
|
# # user_input = input("Введите интервал: ")
|
||||||
|
# # if check_interval(user_input):
|
||||||
|
# # print("Введенное значение относится к типу Interval")
|
||||||
|
# # else:
|
||||||
|
# # print("Введенное значение не относится к типу Interval")
|
||||||
|
|
||||||
# import psycopg2
|
# import psycopg2
|
||||||
# from psycopg2.extras import Interval
|
# from psycopg2.extras import DateTimeTZRange
|
||||||
|
|
||||||
# def check_interval(value):
|
# def check_interval(input_str):
|
||||||
# try:
|
# try:
|
||||||
# # Попытка преобразования значения в объект Interval
|
# # Создаем объект Interval из входной строки
|
||||||
# interval_obj = Interval(value)
|
# interval = DateTimeTZRange(input_str, '[]')
|
||||||
# # Если преобразование успешно, значение относится к типу Interval
|
# except (ValueError, psycopg2.DataError):
|
||||||
# return isinstance(interval_obj, Interval)
|
|
||||||
# except (ValueError, TypeError):
|
|
||||||
# # Если преобразование не удалось, значение не относится к типу Interval
|
|
||||||
# return False
|
# return False
|
||||||
|
# return True
|
||||||
|
# # Примеры использования
|
||||||
|
# print(check_interval('1 day')) # True
|
||||||
|
# print(check_interval('1:60')) # False
|
||||||
|
# print(check_interval('P1Y2M3DT4H5M6.7S')) # True
|
||||||
|
|
||||||
# user_input = input("Введите интервал: ")
|
import this
|
||||||
# if check_interval(user_input):
|
|
||||||
# print("Введенное значение относится к типу Interval")
|
|
||||||
# else:
|
|
||||||
# print("Введенное значение не относится к типу Interval")
|
|
||||||
|
|
||||||
from psycopg2 import Error
|
|
||||||
import psycopg2
|
|
||||||
|
|
||||||
def is_valid_interval(input_string):
|
|
||||||
try:
|
|
||||||
# Создаем соединение с базой данных
|
|
||||||
conn = psycopg2.connect("dbname=your_database user=your_username password=your_password")
|
|
||||||
|
|
||||||
# Создаем курсор для выполнения запросов
|
|
||||||
cursor = conn.cursor()
|
|
||||||
|
|
||||||
# Формируем запрос для проверки ввода
|
|
||||||
query = f"SELECT to_interval('{input_string}');"
|
|
||||||
|
|
||||||
# Выполняем запрос
|
|
||||||
cursor.execute(query)
|
|
||||||
|
|
||||||
# Получаем результаты
|
|
||||||
result = cursor.fetchone()
|
|
||||||
|
|
||||||
# Закрываем курсор и соединение
|
|
||||||
cursor.close()
|
|
||||||
conn.close()
|
|
||||||
|
|
||||||
# Проверяем, был ли результат успешным
|
|
||||||
if result is not None:
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
except Error as e:
|
|
||||||
print(f"Произошла ошибка: {e}")
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Примеры использования
|
|
||||||
print(is_valid_interval('10:30')) # Выведет True
|
|
||||||
print(is_valid_interval('1:60'))
|
|
||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user