9.If语句之复杂条件判断

一、if语句的嵌套用法

假设一个这样的情境:你的面前有三扇门,打开其中一扇后,你发现又有三扇门,数一数你发现,第一层有layer1_a、layer1_b、layer1_c、layer1_d等4扇门,第二层有layer2_a1、layer2_a2、layer2_a3、layer2_b1、layer2_b2、layer2_b3、layer2_c1、layer2_c2、layer2_c3、layer2_d1、layer2_d2、layer2_d3等12扇门。很显然,要想打开第二层的某扇门依赖于第一层的选择。

之前我们已经了解了if语句的三种基本形式,即简单if语句、if_else结构、if_elif…else结构,以上为单一层级的if语句,如果要解决多层级的选择问题,则需要用到嵌套的if语句

嵌套的if语句指在if语句里面还有if语句,嵌套if语句的结构如下图所示。

if 条件判断语句:        # 第一层if
    if 条件判断语句:    # 第二层if
       需要执行的语句
    elif 条件判断语句:  # 第二层if
       需要执行的语句
    else:              # 第二层if
       需要执行的语句
elif 条件判断语句:      # 第一层if
    if 条件判断语句:    # 第二层if
       需要执行的语句
    elif 条件判断语句:  # 第二层if
       需要执行的语句
    else:             # 第二层if
       需要执行的语句
else:                 # 第一层if
    需要执行的语句

第二层if语句将进行何种判断依赖于第一层if语句哪个条件判断为真。如下图中,如果要拿到layer2_b3门中的宝物,你需要同时拥有layer1_b和layer2_b3两扇门的钥匙。

我们来看个实例:你的leader需要你为他实现一个用户登陆功能,要求如下:随机产生4位数字验证码,用户输入正确的验证码、用户名和密码,系统首先判断验证码是否正确,如果错误则提示“验证码输入错误”且不会去判断用户名和密码,如果正确则继续判断用户名和密码是否都正确,否则提示“用户名或密码输入错误”。

你的核心任务:构造一个系统,对用户输入的验证码、用户名和密码进行验证。

根据要求,我们是先判别验证码,如果验证码正确,才继续判别用户名和密码。因此,我们需要一个两层if嵌套语句。我们需要的if嵌套语句结构如下:

if 判别验证码是否正确:  # 如果验证码正确,继续判别用户名和密码
    if 判别用户名和密码是否正确:  #第二层if语句用以判别用户名和密码
        print('恭喜你,登陆成功!')
    else:
        print("用户名或密码错误")
else:  # 如果验证码错误,直接输入提示。
    print("验证码输入错误")

接下来我们写出所有代码,就可以去跟亲爱的leader交差了。

from random import randint

check_code = randint(1000,9999)
username = "Tom"
password = "a123456"
print("验证码",check_code)

identi_code = int(input("请输入验证码:"))
username_input = input("请输入用户名:")
password_input = input("请输入密码:")

if identi_code == check_code:
    if username == username_input and password == password_input:
        print('恭喜你,登陆成功!')
    else:
        print("用户名或密码错误")
else:
    print("验证码输入错误")

嵌套语句在实际使用时,嵌套的层数不宜过多,如果层数太多,既不美观,代码的可读性也会下降,一般情况不超过3层。

if语句的使用灵活多样,除了前文所述,在以后的学习中我们还会将if语句和循环语句结合起来使用,这将使我们的代码性能大幅提升。

二、5道经典if语句练习

1.一年四季。根据输入的月份输出对应的季节。(输入:3月,输出:春季,输入8月,输出:夏季)(春季:3、4、5月,夏季:6、7、8月,秋季:9、10、11,冬季:12、1、2)

2.三只小熊。三只小熊的年龄分别为6、3、4岁,请编程实现对他们年龄从小到大排序。(bear1_old = 6,bear2_old = 3,bear3_old = 4,输出3、4、6)

3.算数题。已知函数y = \left\{\begin{matrix} x^{2}-1\\ x^{2}+1 \end{matrix}\; \; \right.\begin{matrix} x\leq 2.5\\ x> 2.5 \end{matrix} ,根据输入的x值计算y的值,设计一个程序实现以上算法。

4.儿童票。游乐园儿童购票的规定如下:若身高不超过1.1m,则无需购票;若身高超过1.1m但不超过1.4m,可买半票;如果超过1.4m,应买全票,全票价格为298元。设计一个程序实现以上算法。小明和妹妹小青的身高分别为1.3m和0.9m,请问他们去游乐园玩需要付多少钱的门票?

5.体质指数。体质指数 (Body Mass Index,简称BMI),是国际最常用来量度体重与身高比例的工具。它利用身高和体重之间的比例去衡量一个人是否过瘦或过肥。体制指数的计算公示BMI = \frac{Weight(kg)}{Height(m)^{2}}。其中亚裔成年人的体质指数评判标准如下:

BMI<18.5 过轻

18.5<BMI<23.9  正常

24<BMI<27.9 超重

BMI>28 肥胖

设计一个程序实现以上算法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡老师11452

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值