Четвърта задача

  1. опционално, между всяка цифра може да има максимум до два разделителя от следните: интервал, -, ( и )

    същинската част не може да завършва на разделител, но може да започва с разделител(и)

    T.e. след кода на държавата можеш да имаш опционално до 2 разделителя(от изброените) между всеки 2 цифри,но не и след последната цифра на номера.

    [EDIT]Може и да е малко късно, но все пак да питам: при Validations какво точно да очакваме като вход? Примерно можем ли да очакваме Validations.is_email(' harabiq@neshto.com ') да върне True или трябва да очакваме изцяло валидни данни като вход, за да ни върне True ?

    PS: при входа има интервали(в случай,че някой не ги забележи :p)

  2. Тогава като интервала е разделител какво ще върне filter() за:

    088 999999 is my number!

    [PHONE] is my number! или 088 999999 is my number!

    и ако връща второто това означава ли, че всичко е допустима след номера без интервал, -, ( и )?

    Също така какво ще върне за:

    My numbers are +333 9999999, 0894443339 and 055555555.

    Или за:

    +444 999 999 999 99 999

  3. "Число

    Mоже да следва или само една 0, или пък цифра от 1 до 9, последвана от неограничен брой други цифри от 0 до 9 може да има опционално десетичен разделител ., последван от поне една цифра

    Примери: 0.00015

    Както е зададено условието, мисля че примера е невалиден. До колкото разбирам трябва да е или 0.2 или 0, а не може 0.02 понеже може да следва САМО една 0

  4. може да има опционално десетичен разделител ., последван от поне една цифра

    0 също е цифра, и след като не е уточнено цифра от .. до .., трябва да може и 0.

    Само една 0 се отнася за цялата част на числото. Невалиден пример е 00.000015

  5. Здравейте,

    Днес погледнах публикуваните финални тестове на задачата и мисля че в тях има 2 грешки. Според условието телефонен номер е:

    Телефонен номер

    Телефонният номер е последователност от цифри с опционални разделители. Може да бъде в интернационален запис или в локален запис. Да приемем, че всеки номер е съставен от префикс и същинска чст.

    • Префикс:
      • в локален формат, започва с 0, която не е предшествана от друга цифра, буква или символ +; след тази начална 0 не може да следва друга 0
      • в интернационален формат, започва с 00 (след граница на дума) или + и следват една до три цифри международен код, без разделители в тях; международният код не може да започва с 0
    • Същинска част:
      • от 6 до 11 цифри
      • опционално, между всяка цифра може да има максимум до два разделителя от следните: интервал, -, ( и )
      • същинската част не може да завършва на разделител, но може да започва с разделител(и)

    Примери за телефонни номера:

    08812121212        # В локален формат
    +359 88 121-212-12 # В интернационален формат, с разделители
    

    От тук следва че:

    • 0885123 e валиден телефонен номер, защото започва с 0 (префикс в локален формат) и има същинска част от 6 цифри.
      • Така че теста на ред 80 е грешен. 'Reach me at: 0885123': 'Reach me at: 0885123' трябва да бъде 'Reach me at: 0885123': 'Reach me at: [PHONE]'
      • Същият проблем го има и на ред 174 където '0885123': False, трябва да бъде '0885123': True
    • _ не е сред изброените валидни разделители така че _+1_(555) 123-456-99 не е валиден телефонен номер и затова следната тестова функция:

      def test_filters_more_than_one_phone_or_email(self):
          text = """
          Contacts
      
          Phones:_+1_(555) 123-456-99 or 004412125543
          Email: contact@company.co.uk or sales@office.us
          """
      
          filtered = """
          Contacts
      
          Phones: [PHONE] or [PHONE]
          Email: [EMAIL] or [EMAIL]
          """
      
          self.assertEqual(filtered, solution.PrivacyFilter(text).filtered())
      

    е грешна и резутата трябва да бъде:

    Contacts
    
    Phones:_+1_(555) 123-456-99 or [PHONE]
    Email: [EMAIL] or [EMAIL]
    

    В случай че не пропускам нещо и контестацията бъде уважена ще пусна pull request в github.

    Поздрави,
    Иван

Трябва да сте влезли в системата, за да може да отговаряте на теми.