几个函数补充
变量.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()
程序思想 :我理解的分型树的过程其实不难,之前有人问过,所以我给他解释的时候是按照我之前学习单片机的时候的例子,在单片机中有个词叫中断服务函数以及嵌套中断,不论程序是否被打断,最终都会执行到.下面图片中黑色为主函数,蓝色的为中断函数,中断函数打断了主函数,然后被后面的中断函数打断,但是不论怎么打断,最终都会被执行完毕.这在分型树中也是一样的