output - 如果 Python 3.7 中不需要,如何跳过一个条件?
问题描述
我使用 if、try/except 子句编写了一个代码。我想用“try”来检查参数是否正确,如果正确,“print”函数就会运行。如果参数不正确,则将打印错误消息并且打印部分将不会运行。问题是当我输入正确时它正在运行,但是当我输入错误时,在打印错误消息后我得到 NameError,说“room1”没有定义。我明白为什么会发生这种情况,但我很困惑如何在不出错的情况下获得正确的输出。
我的代码是:
class Hotel:
def __init__(self,room,catagory):
if type(room) != int:
raise TypeError()
if type(catagory) != str:
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.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")
except:
print("there's an error")
print (room1)
解决方案
Your print should be in the try
segment of your code as it will always execute whether there is an error or not.
class Hotel:
def __init__(self,room,catagory):
if type(room) != int:
raise TypeError()
if type(catagory) != str:
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.catagories.get(self.catagory)
def __str__(self):
return "%s and %s"%(self.rooms[self.room],self.catagories.get(self.catagory))
Initialization
try:
room1 = Hotel(a,"A")
print (room1)
except:
print("there's an error")
推荐阅读
- arrays - 如何在for循环中调用多个数组?AS3
- python - 抓取的 json 数据想要输出 CSV 文件
- angular - Angular 警报服务需要建议
- javascript - 悬停时显示 d 的 D3 工具提示问题
- algorithm - 多数树评估
- sql - 在 SQL Lite 中使用 LTRIM 的通配符
- javascript - 如何在存储在变量中的字符串之间换行?
- firebase-realtime-database - Firebase 数据库规则:检查服务帐户凭据
- postgresql - JPA 锁定 PESSEMISTIC_WRITE 和 FEW 事务
- html - 搜索输入字段,例如 TripAdvisor 功能