CC++ & Algorithm

程序的选择题:Python if 语句从生活场景到代码实现

2026年7月20日关联知识点:Python if 语句基础7 次阅读

你有没有过这种时刻——站在家门口,看着阴沉的天空纠结:今天到底要不要带伞?如果带了吧,万一没下雨背着累;不带吧,赌一把又怕淋成落汤鸡。其实,你心里早就在做一道选择题:如果下雨,就带伞;否则,不带。这不就是编程里最基础的判断逻辑吗?

Python 的 if 语句,就是帮程序做这种选择题的。别小看它,写不好,你的程序就会像个晕头转向的路人——该执行的不执行,不该执行的乱跑。今天我们就从带伞这件事切入,把 if 的用法掰开揉碎,再配上几道真刀真枪的题目,看看它到底怎么用。

让程序学会“看情况”

if 的本质很简单:给程序一个条件,条件成立就走一段代码,不成立就跳过。比如:

is_raining = True
if is_raining:
    print("带伞出门")

这里的 is_raining 是一个布尔值(TrueFalse)。Python 的 if 后面放的就是一个“真”或“假”的东西。你可以直接放布尔变量,也可以放一个比较运算的结果,比如 temperature > 30

很多新手会犯一个错:把 if is_raining == True: 写成 if is_raining = True:。注意,一个等号是赋值,两个等号才是比较。我教过的学生里,至少有三分之一在这个坑里摔过跟头。如果你也犯了,别慌,记住——判断相等用 ==,赋值用 =

比较运算符:给程序一把尺子

生活中判断带不带伞,你对比的是“是否下雨”这个事实。代码里也一样,用 ><>=<===!= 这些符号就能写出各种条件。比如判断成绩是否及格:

score = 75
if score >= 60:
    print("及格了,继续加油")

这里 score >= 60 会算出一个布尔值,True 就走缩进里的代码,False 就跳过。

缩进很重要——Python 靠缩进组织代码块。任何属于 if 下的语句都必须在同一层缩进,通常是 4 个空格或一个 Tab。下面这种写法会直接报错:

if score >= 60:
print("没缩进,Python 会生气")  # 错误

从带伞到海拔气温:一道经典题

来看一道很实用的题目:已知某基准海拔 H0 和基准气温 T0,求目标海拔 H1 处的气温 T1 = T0 - 0.6 × (H1 - H0) / 100。如果 H1 > 8848 输出“超过地球最高点”;如果 T1 < -50 输出“极寒警告”;否则输出 T1 保留一位小数。

这道题考的是两个独立的条件判断,而且输出有优先级:先判断海拔是否超标,再判断气温是否极寒,最后才是正常输出。注意,即使海拔超标,我们也要输出“超过地球最高点”然后结束程序(不需要再判断气温)。所以逻辑应该是:

if H1 > 8848:
    print("超过地球最高点")
elif T1 < -50:
    print("极寒警告")
else:
    print(f"{T1:.1f}")

使用 elif 可以避免重复判断,这也是 if-else 的进阶用法。如果只用多个 if,当 H1 > 8848 成立时,程序还是会继续检查 T1 是否小于 -50,这就不对了。

核心代码就三行,但思路要清晰:先算 T1,再逐层判断。这道题完美展示了条件语句在实际问题中的应用——不是简单的“如果就”,而是多个条件按优先级排列。

跨时区换算:日期变更怎么办?

再来看一个更贴近日常的题:已知城市 A 的时区 TA 和当地时间 hh:mm,城市 B 的时区 TB,求 B 的当地时间,并考虑日期变更——如果算出的小时 ≥ 24,减去 24 并标注“后一天”;如果 < 0,加上 24 并标注“前一天”。

这道题的核心是计算时差 delta = TB - TA,然后 new_hh = hh + delta。接着对 new_hh 做范围判断:

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

注意输出格式要补零:f"{new_hh:02d}:{mm:02d}"。这道题的关键在于 if ... elif ... else 的配合——三个互斥分支,每个分支里修改小时和标记。它教会我们:条件语句不仅能判断真伪,还能在不同分支里做不同的事情,从而改变程序的“剧情”

那些容易踩的坑

除了前面说的 === 混淆,还有两个常见问题:

  1. 忘记冒号if score >= 60 后面要有冒号,否则语法错误。
  2. 条件太复杂:新手喜欢写 if score >= 60 and score <= 100 and something_else:,其实可以拆成多个 if 或中间变量,让代码更好读。
  3. 布尔值直接判断:如果有一个布尔变量 is_raining,直接写 if is_raining:if is_raining == True: 更简洁。Python 风格指南(PEP 8)也推荐这样。

从 if 到更复杂的决策

学完基础 if,下一步就该接触 if-else(二选一)、elif(多分支)、以及用 andornot 组合条件。你会发现,程序越来越像一个会思考的人——不仅能判断单一条件,还能处理复杂的情况。

比如判断一个年份是否为闰年,需要同时满足“被4整除但不被100整除,或者被400整除”。用逻辑运算符就能优雅地写出来:

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("闰年")

这并不复杂,但需要你熟悉比较和逻辑运算的组合。从带伞到海拔气温,从时区换算到闰年判断,if 语句就是编程世界里的“决策大脑”,没有它,程序永远只能直线执行,永远学不会“看情况”。


关于作者

我是赵老师,持有 NOI 信息学奥赛教练证书,拥有 15 年以上的软件开发经验,从事信息学少儿编程教学已有 8 年时间。

这些年累计帮助 多名 学生通过编程特长升入自己心仪的目标学校。

如果你在编程学习上有任何疑问,欢迎联系我:18620372957(微信同号)

这篇文章对你有帮助吗?

成为第一个评价的人

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