day09 (01) if嵌套

本文介绍了if嵌套的基本格式及应用场景,并通过乘坐公共交通的实际案例,演示如何使用if嵌套来实现复杂的逻辑判断。

if嵌套

通过学习if的基本用法,已经知道了

  • 当需要满足条件去做事情的这种情况需要使用if
  • 当满足条件时做事情A,不满足条件做事情B的这种情况使用if-else

想一想:

坐火车或者地铁的实际情况是:先进行安检如果安检通过才会判断是否有车票,或者是先检查是否有车票之后才会进行安检,即实际的情况某个判断是再另外一个判断成立的基础上进行的,这样的情况该怎样解决呢?

答:

if嵌套

<1>if嵌套的格式

    if 条件1:

        满足条件1 做的事情1
        满足条件1 做的事情2

        if 条件2:
            满足条件2 做的事情1
            满足条件2 做的事情2
  • 说明
    • 外层的if判断,也可以是if-else
    • 内层的if判断,也可以是if-else
    • 根据实际开发的情况,进行选择

<2>if嵌套的应用

demo:

chePiao = 1     # 用1代表有车票,0代表没有车票
daoLenght = 9     # 刀子的长度,单位为cm

if chePiao == 1:
    print("有车票,可以进站")
    if daoLenght < 10:
        print("通过安检")
        print("终于可以见到Ta了,美滋滋~~~")
    else:
        print("没有通过安检")
        print("刀子的长度超过规定,等待警察处理...")
else:
    print("没有车票,不能进站")
    print("亲爱的,那就下次见了")

结果1:chePiao = 1;daoLenght = 9

    有车票,可以进站
    通过安检
    终于可以见到Ta了,美滋滋~~~

结果2:chePiao = 1;daoLenght = 20

    有车票,可以进站
    没有通过安检
    刀子的长度超过规定,等待警察处理...

结果3:chePiao = 0;daoLenght = 9

    没有车票,不能进站
    亲爱的,那就下次见了

结果4:chePiao = 0;daoLenght = 20

    没有车票,不能进站
    亲爱的,那就下次见了
  • 想一想:为什么结果3和结果4相同???

<3>练一练

情节描述:上公交车,并且可以有座位坐下

要求:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果车上有空座位,就可以坐下。

### SQL `DATEDIFF` 函数嵌套 `IF` 的实现 在SQL Server环境中,可以通过使用 `CASE WHEN` 结构来模拟 `IF` 逻辑,并将其与 `DATEDIFF` 函数结合。这允许基于条件计算日期差异。 #### 使用 `CASE WHEN` 实现 `DATEDIFF` 和 `IF` 功能组合 ```sql SELECT CASE WHEN condition THEN DATEDIFF(day, start_date, end_date) ELSE NULL -- 或者其他默认值 END AS days_difference FROM your_table; ``` 此结构可以根据特定条件决定是否应用 `DATEDIFF` 计算[^2]。 对于更复杂的场景,比如根据不同情况返回不同的时间单位(天、月、年),可以进一步扩展: ```sql SELECT CASE WHEN type = 'day' THEN DATEDIFF(day, @startDate, @endDate) WHEN type = 'month' THEN DATEDIFF(month, @startDate, @endDate) WHEN type = 'year' THEN DATEDIFF(year, @startDate, @endDate) ELSE NULL END AS difference FROM some_table; ``` 这里展示了如何通过判断字段 `type` 来动态选择用于比较的时间间隔单位[^1]。 如果希望在一个查询中同时处理多个不同类型的日期差,则可以在单个查询内多次调用带有各自条件的 `DATEDIFF` 函数: ```sql SELECT id, name, CASE WHEN category = 'A' AND active = 1 THEN DATEDIFF(day, created_at, updated_at) WHEN category = 'B' AND status = 'open' THEN DATEDIFF(hour, opened_at, closed_at) ELSE NULL END as duration FROM records; ``` 上述例子说明了根据记录类别和状态的不同而分别计算日数或小时数作为持续期的方法[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值