def click(): folderpath = './display' convertion.convert(folderpath) #convert the DICOM file selected into PNG dataURI = uri.generateURI( './display/output.png' ) #generate the URI address of the dicom image selected return render_template('click_v1.html', dataURI=dataURI)
def test_passar_3_de_numerico_para_unrfield_retorna_3_barras(self): self.assertEquals(convert("3", "numerico", "unrfield"), "///")
def test_passar_1bi_e_2b_de_unrfield_para_numerico_retorna_7(self): self.assertEquals(convert("//\\", "unrfield", "numerico"), "7")
def test_passar_1_de_numerico_para_unrfield_retorna_1_barra(self): self.assertEquals(convert("1", "numerico", "unrfield"), "/")
def test_passar_1bi_de_unrfield_para_numerico_retorna_5(self): self.assertEquals(convert("\\", "unrfield", "numerico"), "5")
def test_passar_3b_de_unrfield_para_numerico_retorna_3(self): self.assertEquals(convert("///", "unrfield", "numerico"), "3")
def test_passar_12_de_numerico_para_unrfield_retorna_2_barra_invertida_2_normal(self): self.assertEquals(convert("12", "numerico", "unrfield"), '//\\\\')
def test_passar_5_de_numerico_para_unrfield_retorna_1_barra_invertida(self): self.assertEquals(convert("5", "numerico", "unrfield"), '\\')
def calulator(): ''' Функция включает режим калькулятора. Функция обрабатывает сообщения пользователя. Сначала принимается система (от 2 до 16), потом арифметическое выражение, выполняется его парсеринг, перевод каждого числа в 10 систему, выполнение данного выражения, перевод его в изначальную систему и вывод результата. Проработана система ошибок: Ошибка 1: при вводе основания системы. Ошибка 1.1: В сообщении встречается не число, а набор недопустимых символов. Ошибка 1.2: Введенное основание больше 16 или меньше 2. Ошибка 2: при вводе выражения. Ошибка 2.1: Данное выражение содержит недопустимые символы. Ошибка 2.2: Данное выражение содержит цифры не для осования, введенного ранее. Ошибка 2.3: Данное выражение содержит арифметическую ошибку (деление на 0, неправильную постановку знаков арифметических действий). Для возвращения на шаг назад нужно ввести слово <<назад>>. :return: None ''' send_massage("Введите основание системы счисления:", event) for eventx in longpoll.listen(): # вечно ждем новых сообщений if eventx.type == VkBotEventType.MESSAGE_NEW: # если сообщение пришло if eventx.obj.text != '': # и оно не пустое if eventx.from_user: # да еще и от пользователя user_sentx = eventx.obj.text # возьмем его текст exit_code = 0 if user_sentx.lower() == "назад": exit_code = 3 send_massage("Выключен режим калькулятора", eventx) if exit_code == 0: for i in user_sentx: if bool(i in numerals) == False: send_massage("Ошибка 1.1: В сообщении не число", eventx) exit_code = 1 break if exit_code == 0: if int(user_sentx) > 16 or int(user_sentx) < 2: send_massage("Ошибка 1.2: Основание больше 16 или меньше 2", eventx) exit_code = 1 if exit_code == 0: base = int(user_sentx) send_massage("Введите пример:", eventx) for eventy in longpoll.listen(): # вечно ждем новых сообщений if eventy.type == VkBotEventType.MESSAGE_NEW: # если сообщение пришло if eventy.obj.text != '': # и оно не пустое if eventy.from_user: # да еще и от пользователя user_senty = eventy.obj.text # возьмем его текст exit_code = 0 if user_senty.lower() == "назад": exit_code = 2 if exit_code == 0: for i in user_senty: if bool(i in list_of_numerals_and_signs) == False: exit_code = 1 send_massage( "Ошибка 2.1: данное выражение содержит недопустимые символы.", eventy) break base_list = list_of_nice_numerals[:base] if exit_code == 0: for i in user_senty: if bool(i in base_list) == False: if bool(i in list_of_nice_signs) == False: print(bool(i in base_list)) print(bool(i in list_of_nice_signs)) print(i) exit_code = 1 send_massage( "Ошибка 2.2: данное выражение содержит цифры не для осования " + str( base), eventy) break if exit_code == 0: list_of_signs = [] list_of_numerals = [] result = '' user_senty.split() print(user_senty) for i in range(len(user_senty)): if user_senty[i] in list_of_nice_numerals: list_of_numerals.append([user_senty[i], i]) if user_senty[i] in list_of_nice_signs: list_of_signs.append([user_senty[i], i]) print(list_of_numerals) list_of_true_numerals = [] nomber = -1 numeral = "" for i in list_of_numerals: if i[1] == nomber + 1: numeral += i[0] nomber += 1 elif i[1] != nomber + 1: list_of_true_numerals.append([numeral, nomber]) nomber = i[1] numeral = i[0] list_of_true_numerals.append([numeral, nomber]) print(list_of_true_numerals) for i in range(len(list_of_true_numerals)): list_of_true_numerals[i][0] = convert(list_of_true_numerals[i][0], base, 10) print(list_of_true_numerals) for i in range(len(user_senty)): for j in list_of_true_numerals: if j[1] == i: result += j[0] del j break for k in list_of_signs: if k[1] == i: result += k[0] del k break print(result) try: eval(result) except: exit_code = 1 send_massage( "Ошибка 2.3: данное выражение содержит арифметическую ошибку.", eventy) if exit_code == 0: result = eval(result) result = convert(str(result), 10, base) result.split() if result[0] == ".": result = "0" + result send_massage(result, eventy) if exit_code == 2: send_massage("Введите новую систему счисления:", eventy) break if exit_code == 3: break