跳到主要内容

3.1 条件判断 if

到目前为止,我们的程序都是从上到下逐行执行。条件判断让程序能根据情况选择走哪条路。

if 的基本结构

age = int(input("请输入年龄:"))

if age >= 18:
print("你已成年")
print("可以进入")

print("程序结束") # 这行不缩进,无论如何都会执行

结构拆解:

  • if 后面跟一个条件(结果为 True/False 的表达式),末尾必须有冒号 :
  • 冒号下面缩进的代码是条件成立时才执行的部分
  • 缩进用 4 个空格(在 VS Code 里按一次 Tab 会自动转成 4 个空格)

⚠️ 缩进就是语法! 很多语言用大括号 {} 表示代码块,Python 用缩进。缩进错了程序就错了,这是新手报错重灾区:

if age >= 18:
print("成年") # ❌ IndentationError:期望缩进却没有

if...else:二选一

age = int(input("请输入年龄:"))

if age >= 18:
print("你已成年")
else:
print("你未成年")

else 表示"否则",不需要写条件,注意它后面也有冒号。

if...elif...else:多选一

elif 是 else if 的缩写,可以写任意多个:

score = int(input("请输入分数:"))

if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")

执行逻辑:从上往下依次检查,命中一个就执行并跳过其余全部。所以输入 95 只会输出"优秀",不会同时输出"良好"。

💡 注意条件的顺序:如果把 score >= 60 写在最上面,输入 95 也会被它拦截住,输出"及格"。写多分支时把范围最严格的放前面。

嵌套 if

if 里面还可以再放 if(缩进再多一层):

has_ticket = input("有票吗?(y/n):")

if has_ticket == "y":
bag_weight = float(input("行李重量(kg):"))
if bag_weight <= 20:
print("欢迎登机")
else:
print("行李超重,请托运")
else:
print("请先买票")

嵌套不宜过深(一般不超过 3 层),太深说明逻辑该拆分了。

条件里的常见写法

name = input("请输入用户名:")

# 判断字符串相等
if name == "admin":
print("管理员你好")

# 组合条件
password = input("请输入密码:")
if name == "admin" and password == "123456":
print("登录成功")

# 判断是否为空字符串(空字符串会被当成 False)
if name:
print("你输入了内容")
else:
print("你什么都没输入")

练习

  1. 写一个程序:输入一个数字,判断它是正数、负数还是零。
  2. 写一个简易登录:用户名是 admin、密码是 888888 时输出"登录成功",否则输出"用户名或密码错误"。
  3. 输入一个年份,判断是否是闰年(能被 4 整除但不能被 100 整除,或能被 400 整除)。
点击查看答案
# 1
num = float(input("输入一个数字:"))
if num > 0:
print("正数")
elif num < 0:
print("负数")
else:
print("零")

# 2
username = input("用户名:")
password = input("密码:")
if username == "admin" and password == "888888":
print("登录成功")
else:
print("用户名或密码错误")

# 3
year = int(input("输入年份:"))
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print("是闰年")
else:
print("不是闰年")

本章小结

  • if 条件: 末尾的冒号和下一行的缩进缺一不可
  • elif 多分支从上往下匹配,命中即停
  • 缩进(4 个空格)是 Python 语法的一部分

下一节:3.2 while 循环