Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Name:
- def __init__(self, full):
- fio = [x for x in full.split(" ") if x] #разбиваем строку по пробелу и убираем ""(появляется, когда два пробела подряд)
- if len(fio) < 2: #поскольку теперь у нас только слова, мы можем проверять их количество
- raise Exception("Name must contain more than 2 words(" + full + ") given")
- self.secondname = fio[0]
- self.firstname = fio[1]
- self.patronymic = fio[2] if len(fio) > 2 else ""
- def brief_name(self):
- return self.secondname + " " + self.firstname
- def initials(self):
- return self.secondname + " " + self.firstname[0] + ". " + ("" if len(self.patronymic) == 0 else (self.patronymic[0] + "."))
- def strfname(self, format):
- return self.replaceAll(format, ["%Ф", "%ф", "%И", "%и", "%О", "%о"], [self.secondname, self.secondname[0], self.firstname, self.firstname[0], self.patronymic, self.patronymic[0] if len(self.patronymic) > 0 else ""])
- def replaceAll(self, str, what, to):
- for i in range(len(what)):
- str = str.replace(what[i], to[i])
- return str
- kek = Name('Иванов Иван')
- print(kek.brief_name())
- print(kek.initials())
- print(kek.strfname('%И %О %ф.'))
- print(kek.strfname('%и. %о. %Ф'))
- print()
- kek = Name('Иванов Иван Иванович')
- print(kek.brief_name())
- print(kek.initials())
- print(kek.strfname('%И %О %ф.'))
- print(kek.strfname('%и. %о. %Ф'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement