CC++ & Algorithm

为什么你的程序需要学会“做决定”?从带伞到海拔气温,Python if 语句的魔法

2026年6月19日关联知识点:Python if 语句基础13 次阅读

每天早晨,你都会做一个简单的决定:如果今天下雨,就带伞。这个决定看起来微不足道,但它背后正是编程中最基础的逻辑——条件判断。在Python里,我们用 if 语句来让程序拥有这种“如果……就……”的能力。没有它,你的程序就像一台只会按顺序执行任务的机器,遇到分支只能傻眼。今天我们来聊聊这个看似简单却极其重要的语法,顺便用两个地理题把它玩出花来。

if 语句:程序的分身术

if 其实就三步:写下 if,后面跟一个条件(比如“下雨了吗?”),条件后面加冒号,然后缩进写条件成立时要干的事。缩进是Python的硬规矩,4个空格——少一个,程序就暴走给你看。

生活里最贴切的比喻就是检查作业。你做完作业了吗?如果做完了,就可以玩。代码里就是:

homework_done = True
if homework_done:
    print("可以玩一会儿了!")

True 表示条件成立,程序会执行缩进里的语句。改成 False 就啥也不输出。这就是最原始的条件分支。

当然,条件通常不是裸的布尔值,而是比较表达式。比如检测年龄是否满12岁:

age = 10
if age >= 12:
    print("可以参加这个活动")

10 >= 12False,所以什么也不打。这里 >= 是大于等于,还有 ><==(两个等号判断相等)、!=(不等)。注意千万别把赋值号 = 当成等号去比,那是初学者的头号陷阱。

关键点:缩进是语法的一部分

很多新手觉得缩进只是“好看”,但在Python里,缩进决定了代码的层级关系。if 下面要有至少一行缩进的代码,否则会报 IndentationError。就算不报错,没缩进的代码会被当成普通顺序执行,逻辑全乱。所以,敲完 if ... : 习惯性地敲4个空格或按Tab(编辑器会自动转空格),然后写内容。

从天气到高山:条件判断实战

接下来用两个题目来展示 if 语句在实际场景中怎么玩。第一个是关于海拔和气温的。题目说:已知某地海拔 H0,气温 T0,计算目标海拔 H1 的气温 T1,公式是 T1 = T0 - 0.6 × (H1 - H0) / 100。如果 H1 > 8848,输出“超过地球最高点”;如果 T1 < -50,输出“极寒警告”;否则输出 T1 保留一位小数。

这道题考什么?其实就是三个条件分支,而且顺序很重要——先判断是否超过地球最高点,再判断是否极寒,最后才是正常输出。注意,如果 H1 > 8848 成立,直接输出后就不应该再计算气温和判断极寒了,因为峰顶都不存在了。所以代码要写成:

if H1 > 8848:
    print("超过地球最高点")
else:
    T1 = T0 - 0.6 * (H1 - H0) / 100
    if T1 < -50:
        print("极寒警告")
    else:
        print(f"{T1:.1f}")

注意这里用了嵌套的 if 来体现“否则再检查”的逻辑。当然你也可以把两个条件并列,但那样当 H1 > 8848 时,还会计算出 T1 并判断,虽然结果不会输出,但效率低且逻辑不清晰。嵌套结构更符合人的自然思考:先排除不可能的情况,再处理正常分支。

再进一步:多分支和日期变更

第二个题目是关于时区换算。给定城市A的时区 TA,时间 hh:mm,以及城市B的时区 TB,求城市B的当地时间,并且要考虑日期变更——如果结果≥24,减去24并标“后一天”;如果结果<0,加上24并标“前一天”。

这题的关键在于时区差导致的加减。时差 = TB - TA,城市B的时间 = 城市A的时间 + 时差。由于时间是24小时制,结果可能超出0~23范围。所以我们需要用条件判断修正:

hour_b = (hh + (TB - TA) + 24) % 24  # 这样其实能取模,但题目要求显式判断

但题目明确要求“如果结果≥24,减24并标后一天;如果结果<0,加24并标前一天”,所以更地道的写法是用 if-elif 或嵌套判断:

new_hour = hh + (TB - TA)
if new_hour >= 24:
    new_hour -= 24
    day_change = "后一天"
elif new_hour < 0:
    new_hour += 24
    day_change = "前一天"
else:
    day_change = ""

注意这里用 elif 而不是 else?因为 new_hour 只有三种可能:≥24、<0、正常区间。用 elif 表示“否则如果”,逻辑清晰。输出时记得用 f"{new_hour:02d}:{mm:02d}" 补零。

这两个题完美展示了 if 语句在不同场景下的应用:要么是单条件判断(海拔超过极限),要么是多分支(时区转换中的三种情况)。掌握好它们,你就能处理大多数需要程序“做决定”的问题。

进阶思考:条件判断的哲学

写 if 语句不仅仅是语法,更是一种思维方式。你需要明确:程序要在什么条件下做什么事?条件之间是互斥还是可能共存?顺序重要吗?比如海拔题,先判断超地球最高点就避免了后续无意义的计算。时区题,条件的三种情况是互斥的,所以用 if-elif-else 最合适。

另外,注意浮点数比较的坑。虽然本题没涉及,但如果你要判断 T1 < -50,浮点运算可能导致舍入误差。实际项目中,比较浮点数通常用 abs(a - b) < epsilon。但这里温度是精确的公式运算,直接比较没问题。

最后给你一个建议:学完 if 后,立刻去练习嵌套和多个条件组合(and/or)。试着写一个“根据海拔和气温判断是否适合登山”的程序,用 if 语句层层过滤——海拔太高不行,气温太低不行,两者都满足才安全。这种多层条件判断是现实世界决策的缩影,编程的魅力正在于此。

这篇文章对你有帮助吗?

有用 50%没用 50%

想系统学习这个知识点?查看完整知识点 →