下面【例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子句 。
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()获取相应的表达式 。
推荐阅读
- Python中的时间序列数据可视化的完整指南
- Python|学python要学多久,学到什么程度才能找工作?
- Python列表边遍历边删除,怎么用才不报越界错误呢?
- Java内置条件队列应用,实现经典的生产者消费者算法
- 用Python实现蒙特卡罗模拟的详细教程
- 公务科员提副科条件是什么?
- python之最详细字符串篇
- 大神总结223个Python小例子,建议收藏
- 请停止在Python中无休止使用列表
- python中的这个库居然是一个管理文件的神器