任何算法都可以用顺序、分支和循环三种结构组合嵌套而成。这个理念对计算机编程语言的发展起到了重要作用,直到今天,我们这次所要学习的就是 Python 三大控制结构中的两种即:顺序结构和分支结构。
顺序结构是 Python 语言的默认结构,也是最容易被人们理解的一种控制结构。以顺序结构编写的程序严格按照程序语句的先后顺序依次执行,从上向下逐行执行,每一行都要执行。
print(1) print(2) print(3) # 以上会进行依次输出 1 2 3
分支结构就是 Python 中的判断语句。对于要先做判断再选择处理方式的问题就要使用分支结构。
分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的前后顺序。根据条件判断是否去执行,分支结构又分为单分支、?双分支和多分支结构三种。
如果 if 的条件满足(真) 则执行缩进的代码块,单分支结构的特点是,当判断条件成立,则执行隶属于该判断语句成立情况下的语句块1;如果判断条件不成立,那么程序将不会做任何事情,转而执行后续(单分支之外)的代码。注意:pass 代表此处有内容,解释器不会报错
?if 100 > 50: ? ? ?pass ? ? ?print("会执行") ? ?print("会执行") ?if 50 < 100: ? ? ?pass ? ? ?print("不会执行") ? ?print("会执行")
实战练习:输入一个数字,如果这个数字是奇数 则再次输入两个数字,如果第二个数字比第三个数字大,则输出第一个数字与第三个数字的差。
first_value = float(input("输入一个数字")) # 输入5 if first_value % 2: # 5除2的余数为1,会进入if分支中执行其中的语句 ? ? second_value = float(input("输入第二个数字")) # 输入10 ? ? third_value = float(input("输入第三个数字")) # 输入8 ? ? if second_value > third_value: # 10 > 8 会进入这个if语句中? ? ? ? ? print(first_value - third_value) # 输出 -3.0
双分支结构的目的非常清晰,即根据判断条件是否成立,给出了两种不同的处理方式,分别对应着 语句块1 和 语句块2 。与单分支结构相比,唯一的区别就是当判断条件不成立时,双分支结构将会执行另一路径的语句块2 ,而不是直接跳过去执行分支结构之外的代码。
?if 10 > 50: # 此处不会进入if语句中 条件为假执行else ? ? ?print("A") ? ? ?print("AA") ? ? ?if 50 > 10: ? ? ? ? ?print("aaaa") ? ? ?else: ? ? ? ? ?print("bbbb") ?else: ? ? ?print("B") ? ? ?print("BB") #以上两个语句会执行 ? ? ?if False: ? ? ? ? ?prin("你好") ? ? ?else:? ? ? ? ? ?print("再见") #此处语句会执行 ?print("C") #当else语句执行完后会执行分支结构之外的代码 ?print("CC")
? ??
?实战练习:输入一个数字如果是5的倍数 则打印醒醒啦,否则 再次输入一个数字,如果第二个数字是第一个数字的倍数,则打印继续睡,否则打印,好好学习
?first_value = float(input("输入一个数字")) ?if first_value % 5 == 0: ? ? ?print("醒醒啦") ?else: ? ? ?second_value = float(input("输入第二个数字")) ? ? ?if second_value % first_value == 0: ? ? ? ? ?print("继续睡") ? ? ?else: ? ? ? ? ?print("好好学习")
多分支结构常用于更多种情况的判断,当使用一个判断条件,两种处理方式不足以解决问题时就可以用到多分支结构。在此分支结构中我们可以使用多个判断条件,并根据每个条件的成立情况执行不同的语句块或者转向下一个判断条件。
需要注意的是,程序在执行多分支结构时,会按照条件的顺序逐一判断,直到遇到一个成立的条件,然后执行隶属于该条件下的语句块,随后会直接跳出整个多分支结构!如果所有的条件都不成立,则会执行多分支结构最后的语句块
举个例子
?value = 100 ?if value == 100: ? ? ?print("醒醒啦") ?elif value == 105: ? ? ?print("好饿呀") ?elif value == 104: ? ? ?print("好好学习11") ?elif value == 103: ? ? ?print("好好学习22") ?else: ? ? ?print("玩去吧")
?实战练习:输入学生成绩 如果成绩不在[0, 100]之间 则输出不合法?[90, 100] 优秀,?[75, 90) 良好
?[60, 75) 及格,?[0, 60) 不及格
?input_score = float(input("输入成绩")) ?if 0 <= score <= 100: ? ?if 90 <= score: ? ? ? ?print("优秀") ? ?elif 75 <= score: ? ? ? ?print("良好") ? ?elif 60 <= score: ? ? ? ?print("及格") ? ?else: ? ? ? ?print("不及格") ?else: ? ? ?print("不合法")
最后,每天进步一点点,争取日进斗金