Python面向对象编程-自定义异常使用(一)
上面的示例中,我们定义了一个名为Game的游戏类,用于处理棋盘和游戏规则。我们还定义了一个名为InvalidMoveError的自定义异常,用于处理玩家
(相关资料图)
自定义异常可用于多种目的。
定义文件时,当文件的格式不正确时,我们可以抛出自定义异常来指示错误。
在编写网络应用程序时,如果网络请求失败,我们可以抛出自定义异常来指示错误。在编写数据库应用程序时,如果数据库连接失败,我们可以抛出自定义异常来指示错误。在编写游戏时,如果玩家尝试在不允许的情况下执行某个操作,我们可以抛出自定义异常来指示错误。下面是一个使用自定义异常的示例,它演示了如何在游戏中处理玩家错误操作:
class InvalidMoveError(Exception): def __init__(self, message): self.message = messageclass Game: def __init__(self): self.board = [["", "", ""] for i in range(3)] self.current_player = "X" def display_board(self): for row in self.board: print(row) def make_move(self, row, col): if row < 0 or row > 2 or col < 0 or col > 2: raise InvalidMoveError("Invalid move. Please choose a row and column between 0 and 2.") if self.board[row][col] != "": raise InvalidMoveError("Invalid move. That square is already taken.") self.board[row][col] = self.current_player if self.current_player == "X": self.current_player = "O" else: self.current_player = "X" def is_game_over(self): for i in range(3): if self.board[i][0] == self.board[i][1] == self.board[i][2] != "": return True if self.board[0][i] == self.board[1][i] == self.board[2][i] != "": return True if self.board[0][0] == self.board[1][1] == self.board[2][2] != "": return True if self.board[0][2] == self.board[1][1] == self.board[2][0] != "": return True return Falsegame = Game()while not game.is_game_over(): game.display_board() row = int(input("Enter row (0-2): ")) col = int(input("Enter column (0-2): ")) try: game.make_move(row, col) except InvalidMoveError as e: print("Error:", e.message)game.display_board()print("Game over!")
上面的示例中,我们定义了一个名为 Game
的游戏类,用于处理棋盘和游戏规则。我们还定义了一个名为 InvalidMoveError
的自定义异常,用于处理玩家的无效移动。
在 make_move
方法中,如果玩家选择了无效的行或列,则抛出 InvalidMoveError
。如果玩家选择了已经被占用的方格,则也会抛出 InvalidMoveError
。在 while
循环中,我们不断调用 make_move
方法,并在出现异常时捕获和处理异常。在异常处理程序中,我们将打印错误消息,告诉用户出现了什么错误。
关键词:
上面的示例中,我们定义了一个名为Game的游戏类,用于处理棋盘和游戏规则。我们还定义了一个名为InvalidMoveError的自定义异常,用于处理玩家
新京报贝壳财经讯(记者黄鑫宇)近期,中国银行业协会(简称“中银协”)发布了《中国汽车金融公司行业发展报告(2022)》(下称《报告》)。4
片中岳婿较劲的片段给观众带去了欢笑,老罗与骏马赤兔相依为命的故事有满满的感动,而成龙贯穿全片对龙虎武师精神的坚守又一次次戳中泪点,大
中金研究院董事总经理赵扬18日参加“国是论坛:2023年一季度经济形势分析会”。中新社记者蒋启明摄 文 赵扬 国家统计局18日公布2023年一
截至2023年4月21日收盘,山煤国际(600546)报收于16 94元,下跌1 51%,换手率0 99%,成交量19 68万手,成交额3 36亿元。
世运电路(SH603920,收盘价:19 17元)4月21日晚间发布一季度业绩公告称,2023年第一季度营收约10 15亿元;归属于上市公司股东的净利润约7503
北京时间4月21日,WTT澳门冠军赛2023展开男女单打1 4决赛的争夺。在刚刚结束的一场男单较量中,中国球员王楚钦与韩国选手张禹珍苦战五局,两度
基金入门基础知识,基金入门很多人还不知道,现在让我们一起来看看吧!1 选择时机:基金理财是一种便捷的投资方式。想买基金,首先要选择合适
人其实不可能真正的感动别人,人只可能自己感动自己,人总是喜欢追求最优选择,但是追求最优选择的后果,往往事与愿违,往往是那些善良的愿望
文 羊城晚报全媒体记者许悦通讯员王磊图 蓝东旭凌晨1点,湛江市小鲜菠农业科技有限公司依旧灯火通明,门前的冷链车一辆紧接一辆,载着一箱箱鲜
1、这个是美娜吧 山东潍坊的美娜还有小E还有一个 忘记叫什么了旁边的美女不是小姨。2、美女感觉根本就是多余的这个人没有小
国潮设计领衔,2023武汉时装周拉开序幕---湖北日报讯(通讯员周钢、谢琪媛)4月20日,2023武汉时装周在江汉经济开发区红T时尚创意街区拉开序幕
前作内容全收录,追加新剧情,新装备品,新武器「剃刀」「金碎棒」「火铳」,追加「忌速火」等近一倍新鬼新增“相马””凛音“”
中寰股份4月20日公布2022年年度分红预案:向全体股东每10股派发现金红利3元(含税),合计派发现金红利总额为3106 5万元。
1、《智能电网广域监测分析与控制技术研究》是2018年8月电子科技大学出版社出版的图书。2、作者是陈国振。文章到此就分享
工业和信息化部总工程师、新闻发言人赵志国20日在国新办发布会上表示,一季度工业和信息化发展实现平稳开局,呈现企稳向好态势。他说,工业经
8强全部诞生!国乒占8席,女单出现大黑马,孙颖莎王艺迪5局险胜
今天来聊聊关于photoshop8 01序列号,photoshop8的文章,现在就为大家来简单介绍下photoshop8
【证监会、发改委公布企业债券发行审核职责划转过渡期工作安排】中国证监会、国家发改委发布关于企业债券发行审核职责划转过渡期工作安排的公
本期债券简称“23滨湖建设SCP003”,代码“012381631”,发行总额为人民币4 7亿元,期限90天,利率2 75%。有效申购家数为9家,有效申购金额为5