Python学习笔记-分支结构

Python学习笔记-分支结构

以程序(3个数字中最大的一个)为例
IPO:

  • 输入:3个数值
  • 处理:3者最大算法
  • 输出:打印最大值

通盘比较

#compare_1.py 通盘比较
def compare_1(x1,x2,x3):
    if x1>=x2 and x1>=x3:
        max=x1
    elif x2>=x3 and x2>=x1:
        max=x2
    else:
        max=x3
    print max
compare_1(1,2,3)

每个分支都站在自己的角度考虑问题,前面的表达式测试过的结论在后面的表达式中并没有被利用,冗余度大,不合格
**注意:**在Python中条件x1>=x2>=x3是合法的,意义与数学表达式一样。

决策树

#compare_2.py 决策树
def compare_2(x1,x2,x3):
    if x1>=x2:
        if x1>=x3:
            max=x1
        else:
            max=x3
    else:
        if x2>=x3:
            max=x2
        else:
            max=x3
    print max
compare_2(1,2,3)

在这里插入图片描述
效率高,但不断嵌套,过于复杂,其复杂度随未知数的增多成指数性增长,如求四者中最大数的问题需3层嵌套,8个赋值语句。

#compare_2.py 决策树
def compare_2(x1,x2,x3,x4):
    if x1>=x2:
        if x1>=x3:
            if x1>=x4:
                max=x1
            else:
                max=x4
        else:
            if x3>=x4:
                max=x3
            else:
                max=x4
    else:
        if x2>=x3:
            if x2>=x4:
                max=x2
            else:
                max=x4
        else:
            if x3>=x4:
                max=x3
            else:
                max=x4
    print max
compare_2(1,2,3,4)

顺序处理

#compare_3.py 顺序结构
def compare_3(x1,x2,x3):
    max=x1
    if x2>=max:
        max=x2
    if x3>=max:
        max=x3
    print max
compare_3(1,2,3)

在这里插入图片描述
最为清晰简洁,同样仅仅包含两个决策,但结构更简单,适用于更复杂的问题,每增加一个数只需增加一个表达式。

应用版:

#compare_3.py 顺序结构
def compare_3():
    #输入需比较的元素个数
    n=eval(raw_input("How many numbers are there?"))
    #将第一个值赋给max
    max=eval(raw_input("Enteer a number>>"))
    #令这个max与后面的n-1个值进行比较
    for i in range(n-1):
        x=eval(raw_input("Enteer a number>>"))
        if x>max:#若有大于max的x则将x赋给max
            max=x
    print "The largest value is",max
compare_3()

使用Python内置函数

max(x1,x2,x3)

通过考虑规模更大更复杂的问题,有助于解决问题的最佳方案。适当考虑程序的通用性,可能会得到更好的解决方案。当然学会借鉴别人已成功的成果,也可以节省时间,提高效率,但不可过度,要先学会原创

编程测验:

编写以下程序,输入三角形的三边,判断三角形的形状:等边三角形(equilateral triangle),等腰三角形(isoceles triangle),不构成三角形(non-triangle),一般三角形(triangle)。

#Triangle.py 判断三角形形状
def Triangle():
    a,b,c=eval(raw_input("Please enter length of three sides of a triangle(a,b,c):"))
#输入三边的边长
    if a+b<=c or a+c<=b or b+c<=a or abs(a-b)>=c or abs(a-c)>=b or abs(b-c)>=a:
        print "it is non-triangle"#三角形的两边之和大于第三边,两边之差小于第三边
    elif a==b==c:#等边三角形
        print "it is equilateral triangle"
    elif a==b or a==c or c==b:#等腰三角形
        print "it is isoceles triangle"
    else:#一般三角形
        print "it is triangle"
    
Triangle()

运用顺序结构(if-elif-else)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值