Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 19, 2016 14:43:16

accex
Зарегистрирован: 2016-02-19
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Что не так с логикой ?

Решал я тут тестовое задание. Суть - нужно было написать регулярку для удаления из строки незакрытых скобок вместе с содержимым, если (!) после них нету закрытых блоков aaaa((bbbb)(ccccc' -> ‘aaaa((bbbb)’ ну и написать тесты для этого

Убирал скобки этим:

from __future__ import unicode_literals
import re
search_unclosed_brackets = re.compile('\([^\)]+$')
def safe_brackets(string):
    """
    Args:
        string (str): source string
    Returns:
        string:
    """
    string = search_unclosed_brackets.sub('', string)
    return string

В тестах использовалась эта регулярка

self.assertFalse(bool(re.findall(r'[\(][^\)]+$',safe_brackets(string)))

Но вот как-то забраковали сей код. Что тут некорректно? За искл. того, что регулярка не срегариует на строку “(”. (+ на * заменить)

Офлайн

#2 Фев. 19, 2016 22:31:08

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Что не так с логикой ?

гичо не ясно по самому заданию



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Фев. 20, 2016 03:48:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Что не так с логикой ?

accex
ну и написать тесты для этого
Вообще-то, с этого надо начинать, а не писать потом.
Напиши тесты, нюансов там много.

accex
В тестах использовалась эта регулярка
А если открывающая скобка в конце строки, то подобный тест спокойно её пройдёт. (Почему подобный, потому что хрень какая-то это, а не тест.)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version