用于一些较为复杂的判断结构程序

hy = input('您是否有会员卡 y/n:')  # 获取判断是否为会员的数据
xf = int(input('请输入消费金额:'))  # 获取消费金额
if hy == 'y':  # 优先判断是否为会员,是再执行下列多分支结构
    if xf >= 200:
        print('打8.5折,打折后消费金额为:', xf * 0.85)
    elif xf >= 100:
        print('打9折,打折后消费金额为:', xf * 0.9)
    else:
        print('不打折,消费金额为:', xf)
else:  # 不是会员,再执行下列双分支结构
    if xf >= 200:
        print('打9.5折,打折后消费金额为:', xf * 0.95)
    else:
        print('不打折,消费金额为:', xf)

运行:

  • 输出问题:您是否有会员卡 y/n:
  • 输入数据:y
  • 输出问题:请输入消费金额:
  • 输入数据:300

运行结果:

  • 打8.5折,打折后消费金额为: 255.0

嵌套if...的语法结构如图所示,可以理解为把一个分支结构的执行代码替换成另一个分支结构,用作多重分支判断,有点类似于思维导图,但思维导图是总结,而嵌套if...是判断,优先进行第一层级分支结构的条件判断,符合某一个条件后,再执行这个条件下的代码,只不过这个代码也是一个分支结构,所以它会继续向下做条件判断,直到得出最终结果(按缩进来区分分支结构的层级和从属关系,没有缩进的为第一层级)

值得注意的是,多分支结构中,会按上下顺序一条条来判断,只要上面的判断条件符合了,下面的判断条件将不再执行,像上面这种单向区间的判断式,我们需要留意上下顺序来形成有序的判断流程,例如:我先判断消费金额是否大于等于100,再判断是否大于等于200,然后获取的消费金额为300,虽然它符合第二个判断条件,但同时也符合第一个判断条件,按照规则,系统只会执行第一个判断条件下的代码,第二个判断条件将不再执行,显然300是大于等于200的,这样判断不符合逻辑,这个时候我们就需要把两个判断条件调换一下顺序,先判断消费金额是否大于等于200,不符合的话再判断是否大于等于100,这样就符合逻辑了

最后修改:2021 年 06 月 10 日 04 : 19 PM