Что нужно сделать
В России для транспорта применяются регистрационные знаки нескольких видов.
Общее в них то, что они состоят из цифр и букв. Причём используются только 12 букв кириллицы, имеющих графические аналоги в латинском алфавите: А, В, Е, К, М, Н, О, Р, С, Т, У и Х.
У частных легковых автомобилей номера — это буква, три цифры, две буквы, затем две или три цифры с кодом региона.
У такси — две буквы, три цифры, затем две или три цифры с кодом региона.
Напишите программу, которая в перечне номеров находит номера частных автомобилей и номера такси:
Пример перечня:
А578ВЕ777 ОР233787 К901МН666 СТ46599 СНИ2929П777 666АМР666'
Результат:
Список номеров частных автомобилей: ['А578ВЕ777', 'К901МН666']
Список номеров такси: ['ОР233787', 'СТ46599']
Что оценивается
- Результат вычислений корректен.
- Формат вывода соответствует примеру.
- Решение опирается на использование регулярных выражений и их методов.
- Переменные, функции и собственные методы классов имеют значащие имена, не
a
,b
,c
,d
.
import re
def determinant(text: str) -> list:
civil = re.compile(r'''
[АВЕКМНОРСТУХ]
\d{3}
[АВЕКМНОРСТУХ]{2}
\d{2,3}
''', re.VERBOSE)
taxi = re.compile(r'''
[АВЕКМНОРСТУХ]{2}
\d{5,6}
''', re.VERBOSE)
civilset = [number for number in civil.findall(text)]
taxiset = [number for number in taxi.findall(text)]
result = f'''
Списки номеров частных авто: {civilset}
Список номеров такси: {taxiset}'''
return result
def main():
print(determinant('А578ВЕ777 ОР233787 К901МН666 СТ46599 СНИ2929П777 666АМР666'))
if __name__ == '__main__':
main()