Advertisement
Pearlfromsu

hhhh

Mar 4th, 2022
909
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.58 KB | None | 0 0
  1. class Name:
  2.     def __init__(self, full):
  3.         fio = [x for x in full.split(" ") if x] #разбиваем строку по пробелу и убираем ""(появляется, когда два пробела подряд)
  4.         if len(fio) < 2: #поскольку теперь у нас только слова, мы можем проверять их количество
  5.             raise Exception("Name must contain more than 2 words(" + full + ") given")
  6.         self.secondname = fio[0]
  7.         self.firstname = fio[1]
  8.         self.patronymic = fio[2] if len(fio) > 2 else ""
  9.     def brief_name(self):
  10.         return self.secondname + " " + self.firstname
  11.     def initials(self):
  12.         return self.secondname + " " + self.firstname[0] + ". " + ("" if len(self.patronymic) == 0 else (self.patronymic[0] + "."))
  13.     def strfname(self, format):
  14.         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 ""])
  15.     def replaceAll(self, str, what, to):
  16.         for i in range(len(what)):
  17.             str = str.replace(what[i], to[i])
  18.         return str
  19.  
  20. kek = Name('Иванов              Иван')
  21. print(kek.brief_name())
  22. print(kek.initials())
  23. print(kek.strfname('%И %О %ф.'))
  24. print(kek.strfname('%и. %о. %Ф'))
  25.  
  26. print()
  27.  
  28. kek = Name('Иванов Иван Иванович')
  29. print(kek.brief_name())
  30. print(kek.initials())
  31. print(kek.strfname('%И %О %ф.'))
  32. print(kek.strfname('%и. %о. %Ф'))
  33.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement