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)

Python学习笔记-分支结构_第1张图片
效率高,但不断嵌套,过于复杂,其复杂度随未知数的增多成指数性增长,如求四者中最大数的问题需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)

Python学习笔记-分支结构_第2张图片
最为清晰简洁,同样仅仅包含两个决策,但结构更简单,适用于更复杂的问题,每增加一个数只需增加一个表达式。

应用版:

#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)

你可能感兴趣的:(Python,Python菜鸟学习笔记)