一、什么是if-else语句?
if-else 是Python中用于二选一的条件判断语句。当条件成立时,执行一段代码;当条件不成立时,执行另一段代码。就像生活中的“如果……否则……”。
age = 16
if age >= 18:
print("你可以进入")
else:
print("你不能进入")
二、if-else的基本语法
if 条件:
条件为真时执行的代码块
else:
条件为假时执行的代码块
语法要点:
三、if-else的执行流程
- 2. 如果为真,执行
if 下面缩进的代码块,然后跳过 else 部分 - 3. 如果为假,跳过
if 代码块,执行 else 下面缩进的代码块
可以用下图表示:
┌─────┐
│ 条件 │
└──┬──┘
│
真 ┌──┴──┐ 假
▼ ▼
if代码块 else代码块
│ │
└──┬──┘
▼
后续代码
四、简单示例
示例1:判断奇偶
num = 7
if num % 2 == 0:
print("偶数")
else:
print("奇数") # 输出:奇数
示例2:判断是否成年
age = int(input("请输入年龄:"))
if age >= 18:
print("成年人")
else:
print("未成年人")
示例3:判断字符串是否为空
name = input("请输入名字:")
if name:
print(f"你好,{name}")
else:
print("你没有输入名字")
五、if-else 与 多个if 的区别
初学者容易混淆 if-else 和 两个独立的 if。
# 使用两个独立的if
x = 5
if x > 0:
print("正数")
if x <= 0:
print("非正数")
# 两个条件都会判断,但这里互斥,结果正确
# 使用if-else更清晰
if x > 0:
print("正数")
else:
print("非正数")
区别:
- • 两个独立的
if 可能都执行(如果条件重叠)或都不执行。
在二选一的情况下,if-else 更合适,逻辑更清晰。
六、if-else 与 if-elif-else 的区别
- •
if-else:只有两个分支,条件为真走if,否则走else。 - •
if-elif-else:多个分支,依次判断,只要有一个为真就执行对应分支并结束。
何时用if-else: 只需要区分“成立”和“不成立”两种情况时。
七、嵌套if-else
if-else 内部可以再包含 if-else,形成嵌套结构。
age = 20
has_id = True
if age >= 18:
print("年龄符合")
if has_id:
print("可以进入")
else:
print("请出示身份证")
else:
print("未成年人禁止进入")
注意: 嵌套层数不宜过多,否则影响可读性。有时可以用逻辑运算符简化。
# 用 and 简化上面的嵌套
if age >= 18and has_id:
print("可以进入")
elif age >= 18andnot has_id:
print("请出示身份证")
else:
print("未成年人禁止进入")
八、条件表达式(三元运算符)—— if-else 的简洁写法
Python 提供了一种单行的 if-else 写法,称为条件表达式或三元运算符。
变量 = 值1if 条件 else 值2
当条件为真时,取 值1;为假时,取 值2。
age = 20
status = "成年"if age >= 18else"未成年"
print(status) # 成年
# 等价于:
if age >= 18:
status = "成年"
else:
status = "未成年"
注意: 三元运算符适用于简单的二选一赋值,复杂的逻辑还是用完整的 if-else 更清晰。
九、常见错误与注意事项
9.1 忘记冒号 :
if score > 60# ❌ 缺少冒号
print("及格")
9.2 缩进错误
if score > 60:
print("及格")
print("考试结束") # ❌ 缩进不一致,可能报错或逻辑错误
9.3 else 后面不能跟条件
if score > 60:
print("及格")
else score <= 60: # ❌ else后面不能有条件
print("不及格")
9.4 混淆 = 和 ==
if x = 5: # ❌ 赋值语句,会报错
print("x等于5")
9.5 空值判断
data = []
if data: # 空列表为False
print("处理数据")
else:
print("数据为空")
9.6 else 悬垂问题
在嵌套if中,else 总是与最近的 if 配对,除非用缩进明确。
if a > 0:
if b > 0:
print("a和b都为正")
else:
print("a不大于0") # 这个else与第一个if配对
如果想与第二个if配对,需要调整缩进或使用花括号(但Python没有花括号,所以必须用缩进):
if a > 0:
if b > 0:
print("a和b都为正")
else:
print("a为正,但b不大于0") # 与第二个if配对
else:
print("a不大于0")
十、实战案例
案例1:判断闰年
year = int(input("请输入年份:"))
if (year % 4 == 0and year % 100 != 0) or (year % 400 == 0):
print(f"{year}年是闰年")
else:
print(f"{year}年不是闰年")
案例2:简单的登录验证
username = input("用户名:")
password = input("密码:")
if username == "admin"and password == "123456":
print("登录成功")
else:
print("用户名或密码错误")
案例3:奇偶判断 + 正负判断
num = int(input("请输入一个整数:"))
if num > 0:
if num % 2 == 0:
print("正偶数")
else:
print("正奇数")
elif num < 0:
if num % 2 == 0:
print("负偶数")
else:
print("负奇数")
else:
print("零")
案例4:根据分数输出等级(用if-else链,但更推荐if-elif)
score = int(input("请输入分数:"))
if score >= 90:
grade = 'A'
else:
if score >= 80:
grade = 'B'
else:
if score >= 70:
grade = 'C'
else:
if score >= 60:
grade = 'D'
else:
grade = 'F'
print(f"等级:{grade}")
这种方式虽然可行,但嵌套太深,可读性差。实际中应该用 if-elif-else。
案例5:找零计算器
total = float(input("总价:"))
paid = float(input("付款:"))
if paid >= total:
change = paid - total
print(f"找零:{change:.2f}元")
else:
shortage = total - paid
print(f"金额不足,还差 {shortage:.2f}元")
案例6:判断三角形(简化版,只判断等边或不等边)
a = float(input("边长a:"))
b = float(input("边长b:"))
c = float(input("边长c:"))
if a == b == c:
print("等边三角形")
else:
print("不是等边三角形")
十一、if-else 与 布尔值
在Python中,任何值都可以被解释为布尔值。if-else 的条件部分会隐式调用 bool() 转换。
# 以下值会被当作False:None、False、0、0.0、""、[]、()、{}、set()
# 其他值都是True
items = []
if items:
print("有元素")
else:
print("空列表") # 输出
利用这一特性可以写出简洁的代码。
十二、总结
- • 语法清晰:
if 条件: ... else: ... - • 可以用条件表达式(三元运算符)简化简单的二选一赋值。
- • 多个分支时考虑
if-elif-else 而不是多层嵌套。
练习建议:
- 1. 编写一个程序,判断一个数是正数、负数还是零(可以用if-elif-else)。
- 2. 编写一个程序,判断一个年份是否是闰年,输出结果。
- 3. 编写一个程序,根据用户输入的身高体重计算BMI,并判断是否正常(可以用if-else)。
掌握 if-else 是学习编程逻辑控制的第一步,多写多练,很快就能熟练运用。