Вместо isinstance используйте try и исключение в Python 3.7. - PullRequest
0 голосов
/ 17 февраля 2019

Я написал код для перехвата моего сообщения об ошибке, используя try и исключением (я хочу написать его без использования isinstance), и я получаю сообщение об ошибке, когда ввод не является целым числом.Проблема в том, что программа выдает мне сообщение об ошибке, даже если введенное значение является действительным целым числом.Пожалуйста, дайте мне несколько советов, чтобы заставить его работать.Мой код приведен ниже:

Я пытался использовать исключение, но это не сработало.

class Hotel:
    def __init__(self,room,catagory):
        if room != int:
            raise TypeError ()
        self.room = room
        self.catagory = catagory
        self.catagories = {"A":"Elite","B":"Economy","C":"Regular"}
        self.rooms = ["0","1","2","3","4","5"]

    def getRoom(self):
        return self.room

    def getCatagory(self):
        return self.catagory
        return self.catagories.get(self.catagory)
    def __str__(self):
        return "%s and %s"%(self.rooms[self.room],self.catagories.get(self.catagory))
try:
    room1 = Hotel(a,"A")
    room2 = Hotel(1,"A")
    print(room1.getRoom())
except:
    print("there's an error")

Я ожидаю:

есть ошибка

1 и Elite

A

1 Ответ

0 голосов
/ 17 февраля 2019

Вы проверяете, если room != int.Это всегда даст вам ошибку.

Вы должны проверить type(room)!= int.Я исправил код ниже

class Hotel:
    def __init__(self,room,catagory):
        if type(room) != int:
            raise TypeError ()
        self.room = room
        self.catagory = catagory
        self.catagories = {"A":"Elite","B":"Economy","C":"Regular"}
        self.rooms = ["0","1","2","3","4","5"]
...