При создании экземпляра класса с аргументами input() в числе выдает ошибку или вовсе не принимает, почему?

При попытке создания экземпляра класса таким образом, чтобы аргументы объекта можно было ввести, столкнулся с ошибкой только там, где числа. При использовании просто input() он пропускает в записываемом фале этот параметр, а при попытке преобразовать как на примере выдает ошибку ValueError: invalid literal for int() with base 10: ''.

Кто подскажет ученику, что не так?

from string import ascii_letters

class Person:
    S_RUS = 'абвгдеёжзийклмнопрстуфхцчшщьыъэюя-'
    S_RUS_UPPER = S_RUS.upper()

    def __init__(self, fio, old, ps, weight):
         self.verify_fio(fio)

         self.__fio = fio.split()
         self.__old = old
         self.__passport = ps
         self.__weight = weight

    @classmethod
    def verify_fio(cls, fio):
        if type(fio) != str:
             raise TypeError('ФИО длжно быть строкой')

        f = fio.split()
        if len(f) != 3:
             raise TypeError('Неверный формат ФИО')

        letters = ascii_letters + cls.S_RUS + cls.S_RUS_UPPER
        for s in f:
            if len(s) < 2:
                  raise TypeError('В ФИО длжен быть хотябы один символ')
            if len(s.strip(letters)) != 0:
                  raise TypeError('В ФИО должны быть только буквы')

    @classmethod
    def verify_old(cls, old):
            if type(old) != int or old < 14 or old > 120:
                  raise TypeError("Возраст должен быть целым числом от 14 до 120")

    @classmethod
    def verify_weight(cls, w):
            if type(w) != float or w < 20:
                  raise TypeError("Вес должен быть вещественным числом от 20 и выше")

    @classmethod
    def verify_ps(cls, ps):
            if type(ps) != int:
                  raise TypeError("Паспорт должен быть строкой")

            s = ps.split()
            if len(s) != 2 or len(s[0]) != 4 or len(s[1]) != 6:
                  raise TypeError('Неверный формат паспорта')

            for p in s:
                  if not p.isdigit():
                        raise TypeError("Серия и номер паспорта должны быть числами")

     @property
     def fio(self):
            return self.__fio

     @fio.setter
     def fio(self, old):
           self.verify_old(old)
           self.__old = old

     @property
     def old(self):
           return self.__old

     @old.setter
     def old(self, old):
          self.verify_old(old)
          self.__old = old

     @property
          def weight(self):
          return self.__weight

     @weight.setter
     def weight(self, weight):
         self.verify_weight(weight)
         self.__weight = weight

     @property
     def passport(self):
         return self.__passport

     @passport.setter
     def passport(self, passport):
        self.verify_ps(ps)
        self.__passport = passport


s = Person('Иванов Иван Иванович', 36, '1223 456743', 90)
g = Person(input(), int(input()), input(), float(input()))

with open('home.txt', 'w+') as r:
   for item in s.fio:
       r.seek(0)
          if item not in r.read():
              r.write(" ".join(s.fio) + " " + str(s.old) + ' лет' + " " + 'Паспорт: ' + s.passport + " " + 'Вес: ' + str(s.weight) + '\n')
              r.write(" ".join(g.fio) + " " + str(g.old) + ' лет' + " " + 'Паспорт: ' + g.passport + " " + 'Вес: ' + str(g.weight))

Ответы (0 шт):