Member 14141186 Ответов: 1

Как я могу поймать сообщение об ошибке, если пользователь дает неправильный ввод (без использования isinstance)?


Я написал код, чтобы поймать свое сообщение об ошибке с помощью try and except (я хочу написать его без использования 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")
except:
    print("there's an error")



Я ценю вашу помощь.

Что я уже пробовал:

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

1 Ответов

Рейтинг:
1

Bryian Tan

В этом случае вы можете обновить код, чтобы проверить наличие type

if not type(room) is int:


чтобы распечатать исключение, попробуйте

import sys

except:     
    print("Unexpected error:", sys.exc_info()[0])


Пример: CP_hotel | Pyfiddle[^]

обработка ошибок - как напечатать исключение в Python? - переполнение стека[^]


Member 14141186

Я написал::


если тип (номер) != int:
поднять TypeError()

Но все же я получаю сообщение об ошибке только тогда, когда даю допустимое целое число в room2.

Я не понял, что вы имеете в виду под словом "исключение". Я имею в виду, что было бы полезно, если бы Вы прояснили немного больше.

Спасибо.

Bryian Tan

вот вам пример: CP_hotel | Pyfiddle[^]