python学习日志(七)"异常处理,几个递归函数的例子"
2018-12-14 23:17
435 查看
几个函数补充
- 变量.find(" ") 寻找空格
- 变量.split(" ") 替换空格为逗号
异常处理机制
- 引入异常处理机制可以用来解决程序运行时的错误
#语法 try: <body> except <ErrorType1>: <handler1> except <ErrorType2>: <handler2> except: <handler0>
- 当python遇到try语句,先尝试执行try包含的代码块
- 如果没有错误发生,执行try-except后面的语句
- 如果发生错误,python寻找一个符合该错误的异常语句,然后执行相应的except的处理代码
一个BMR计算程序设计
- 程序:计算BMR值
- 功能:根据输入的信息计算出带单位的BMR值
#程序实现 def BMR(): """ BMR计算函数 """ try: BMR_value = input("请输入您的性别,身高,年龄,体重,并用空格隔开") BMR_value = BMR_value.split(" ") gender = BMR_value[0] height = float(BMR_value[1]) age = int(BMR_value[2]) weight = float(BMR_value[3]) print("您的性别为{0},身高{1}cm,年龄{2}岁,体重{3}公斤".format(gender, height, age, weight)) if gender == "男": BMR_Value = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66 print("您的基础代谢率为{}大卡".format(BMR_Value)) elif gender == "女": BMR_Value = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655 print("您的基础代谢率为{}大卡".format(BMR_Value)) else: print("暂不支持该性别!") except: print("程序异常!") def main(): """ 主函数 """ Q = input("是否退出程序?(Y/N)") while Q != "Y": BMR() Q = input("是否退出程序?(Y/N)") if __name__ == "__main__": main()
汉诺塔程序设计
- 汉诺塔游戏规则,只有三个桌子,盘子由小到大从上往下堆叠,要求一次只能移动一个盘子,并且无论何时小盘子都在大盘子上
- 程序实现
""" 汉诺塔游戏程序实现 """ def fun(n, a, b, c): if n == 1: print(a, "->", c) else: fun(n - 1, a, c, b) print(a, "->", c) fun(n - 1, b, a, c) def main(): fun(3,"A","B","C") if __name__ == "__main__" main()
- 程序思想:
无论有多少个盘子,最后都是把A桌子最底下的一个盘子给放到C桌子最下面.个人认为比较难理解,不能把第一步第二步怎么做给写出来,实现不了.要理解的是在else语句中,要做的都是重复的事情,就是把盘子不停地在ab之间转换,从而抽出最底下的盘子
分型树的绘制
- 前面几次讲了turtle的使用,分型树就是调用turtle库结合递归实现的
#案例:绘制分型树 import turtle def fenxing_tree(n): if 5 < n < 15: turtle.pencolor('green') else: turtle.pencolor('brown') if n > 5 : #绘制右边树枝 turtle.pendown() turtle.forward(n) turtle.right(20) fenxing_tree(n-5) #绘制左边树枝 turtle.left(40) fenxing_tree(n-5) #返回原点 turtle.penup() turtle.right(20) turtle.backward(n) def main(): turtle.left(90) turtle.penup() turtle.backward(150) turtle.pendown() fenxing_tree(40) turtle.exitonclick() if __name__ == "__main__": main()
- 程序思想:我理解的分型树的过程其实不难,之前有人问过,所以我给他解释的时候是按照我之前学习单片机的时候的例子,在单片机中有个词叫中断服务函数以及嵌套中断,不论程序是否被打断,最终都会执行到.
- 下面图片中黑色为主函数,蓝色的为中断函数,中断函数打断了主函数,然后被后面的中断函数打断,但是不论怎么打断,最终都会被执行完毕.这在分型树中也是一样的
相关文章推荐
- python中的异常处理+日志例子
- 12、python学习笔记——异常处理,日志模块
- python系列学习二——文件操作及异常处理
- python学习笔记(四):异常情况处理
- python学习日志(八)"datetime库的使用,几个小程序"
- [Python学习笔记][第八章Python异常处理结构与程序调试]
- Python学习日志0124 异常,抽象类
- python 系统学习笔记(九)---异常处理
- Java学习第10天(2):异常机制-处理例子
- 学习python的第三十五天-处理异常
- Python异常处理学习笔记
- Python入门的36个例子 之 33 -> try – 异常是不可避免的,关键是怎样处理
- j2me学习笔记【5】——抛出异常处理的小例子
- Python学习17:异常处理(二)
- Python菜鸟学习手册11----异常处理
- [Python进阶-6]错误异常处理,断言assert,日志logging,单元测试,文档测试
- Python学习--异常处理,自定义异常类
- python学习之----异常处理小示例
- python 学习之二次函数求解以及异常处理
- python异常处理和日志处理