3.1.3 多分支if/elif/else语句

多分支if/elif/else语句的语法形式如下所示:

多分支语句的执行流程如图3.3所示。

if/elif/else这种多分支结构先判断条件表达式1的真假:如果条件表达式1的结果为真(包括非零、非空),则执行语句体1中的操作;如果条件表达式1的结果为假(包括零、空),则继续判断条件表达式2的真假;如果条件表达式2的结果为真(包括非零、非空),则执行语句体2中的操作;如果条件表达式2的结果为假(包括零、空),则继续判断表达式3的真假;……从上到下依次判断条件表达式,找到第一个为真的条件表达式,就执行该条件表达式下的语句体,不再判断剩余的条件表达式。如果所有条件表达式均为假,则执行else后面的语句体;如果此时没有else语句体,则不执行任何操作。任何一个分支的语句体执行后,直接结束该分支语句。

图3.3 多分支if/elif/else语句流程图

语句体1,语句体2,…,语句体n,既可以包含多条语句,也可以只由一条语句组成。

【例3-4】 从键盘输入标准价格和订货量。根据订货量、价格给以不同的折扣,计算应付货款(应付货款=订货量×标准价格×(1-折扣率))。订货量300以下,没有折扣;订货量300及以上,500以下,折扣率为3%;订货量500及以上,1000以下,折扣率为5%;订货量1000及以上,2000以下,折扣率为8%;订货量2000及以上,折扣率为10%。

分析:键盘输入标准价格price、订货量Quantity,依照上述标准进行判断得到折扣率。注意,还需要考虑订货量和标准价格输入小于0时的错误情况。

程序代码:

程序第一次运行结果:

程序第二次运行结果:

程序第三次运行结果:

思考:需要输入多少个标准价格和订货量组成的测试数据,才能验证程序的每个分支都是正确的?