Python条件语句详解:if、else、switch都有了( 二 )


下面【例3-2】中的这段代码通过判断学生的分数,确定学生成绩的等级 。
【例3-2.py】
1# if elif else语句 2score = float( input("score:"))  # 接收用户输入并将其转换为float类型,当输入为小数时,使用int转换会报错 3if 90 <= score <= 100: 4    print("A") 5elif 80 <= score < 90: 6    print("B") 7elif 60 <= score < 80: 8    print("C") 9else:10    print("D")【代码说明】

  • 第2行代码定义了一个变量score,假设输入的值为70 。这个变量表示学生的分数 。接收用户输入并将其转换为float类型 。
  • 第3行代码,分数大于等于90并且小于等于100,则等级评定为“A” 。
  • 第5行代码,分数大于等于80并且小于90,则等级评定为“B” 。
  • 第7行代码,分数大于等于60并且小于80,则等级评定为“C” 。此时条件表达式成立,程序流转到第8行 。输出结果为C 。
  • 第9行代码,当前面的条件表达式都不成立时,程序流转到else子句 。
03 if语句也可以嵌套if语句的嵌套是指if语句中可以包含一个或多个if语句 。嵌套的格式如下所示 。
if(表达式1):if(表达式2): 语句1elif(表达式3): 语句2…else: 语句3elif(表达式n):…else: …下面【例3-3】中的这段代码是一个嵌套的条件语句 。如果x的值大于0,则y的值等于1;如果x的值等于0,则y的值等于0;如果x的值小于0,则y的值等于-1 。
【例3-3.py】
1x = -1 2y = 99 3if(x >= 0): 4    if(x > 0):#嵌套的if语句 5        y = 1 6    else: 7        y = 0 8else: 9    y = -110print ("y =", y)【代码说明】
  • 第2行代码定义了一个变量y 。为了不和最终可能的输出结果1、0、-1重复,设置y的初始值为99 。
  • 第3行代码判断变量x的值 。如果x大于等于0,则执行下面嵌套的if语句 。
  • 第4行代码,判读x的值是否大于0 。如果大于0,则执行第5行代码;否则,执行第7行代码 。
  • 第8行代码,如果变量x的值小于0,则执行第9行代码 。
  • 第9行代码,由于变量x的值为-1,因此y的值等于-1 。
  • 第10行代码的输出结果为-1 。
嵌套语句可以组合出很多写法,但是要注意把所有的分支情况都考虑到 。下面的这种写法是错误的 。
1# 错误的嵌套语句2x = -13y = 994if(x != 0):           # 如果x不等于05    if(x > 0):          #嵌套的if语句6        y = 17else:8    y = 09print ("y =", y)【代码说明】
  • 第4行代码判断变量x的值是否等于0 。如果不等于0,则执行if语句下面的代码块;否则执行else子句的代码 。由于x的值等于-1,程序流转到第5行 。
  • 第5行代码判断变量x的值是否大于0 。如果大于0,则变量y的值设置为1 。由于这里没有考虑到变量x小于0的情况,所以程序直接跳转到第9行 。
  • 第9行代码,变量y的值并没有被改变,程序的分支结构没有考虑到x小于0的情况,所以最终输出的不是期望中的结果 。输出结果为99 。
注意:编写条件语句时,应该尽可能避免使用嵌套语句 。嵌套语句不便于阅读,而且可能会忽略一些可能性 。
04 switch语句的替代方案switch语句用于编写多分支结构的程序,类似于if…elif…else语句 。C语言中switch语句的结构如下所示 。
switch(表达式) {    case 常量表达式1: 语句1    case 常量表达式2: 语句2    …    case 常量表达式n: 语句n    default: 语句m}switch语句表示的分支结构比if…elif…else语句更清晰,代码可读性更高,但是Python并没有提供switch语句,而是可以通过字典实现switch语句的功能 。
实现方法分为两步 。首先,定义一个字典 。字典是由键值对组成的集合 。其次,调用字典的get()获取相应的表达式 。


推荐阅读