if...else 详解
if...else 是条件判断语句的双分支结构,核心逻辑是:满足条件执行 if 代码块,不满足则执行 else 代码块(二选一,必有一个分支执行)。
以下结合不同编程语言、核心语法、常见场景和注意事项,帮你彻底掌握 if...else。
一、核心语法(按语言分类)
1. Python 中的 if...else
Python 用冒号分隔条件和代码块,缩进(4 个空格 / Tab)区分代码块范围,else 后也需加冒号。
基础语法:
python
运行
# 格式:
if 条件表达式:
条件为 True 时执行的代码
else:
条件为 False 时执行的代码
示例 1:判断数值大小
python
运行
num = 7
if num > 10:
print(f"{num} 大于 10")
else:
print(f"{num} 小于等于 10") # 执行此分支,输出:7 小于等于 10
示例 2:判断是否为偶数
python
运行
num = 18
if num % 2 == 0:
print(f"{num} 是偶数") # 执行此分支
else:
print(f"{num} 是奇数")
简化写法(三元表达式):
Python 支持 if...else 简写为三元运算符,适合简单逻辑:
python
运行
# 格式:结果1 if 条件 else 结果2
num = 9
result = "偶数" if num % 2 == 0 else "奇数"
print(result) # 输出:奇数
2. Java 中的 if...else
Java 用小括号 () 包裹条件表达式,大括号 {} 包裹代码块(即使单行代码,也建议加 {},避免逻辑错误)。
基础语法:
java
运行
// 格式:
if (条件表达式) {
条件为 true 时执行的代码
} else {
条件为 false 时执行的代码
}
示例:判断登录密码是否正确
java
运行
String password = "123456";
if (password.equals("123456")) {
System.out.println("密码正确,登录成功"); // 执行此分支
} else {
System.out.println("密码错误,登录失败");
}
3. C/C++ 中的 if...else
语法和 Java 几乎一致,仅输出 / 输入语法不同:
cpp
运行
#include <iostream>
using namespace std;
int main() {
int age = 17;
if (age >= 18) {
cout << "已成年" << endl;
} else {
cout << "未成年" << endl; // 执行此分支
}
return 0;
}
4. JavaScript 中的 if...else
语法接近 Java/C++,弱类型语言无需声明变量类型:
javascript
运行
let score = 59;
if (score >= 60) {
console.log("及格");
} else {
console.log("不及格"); // 执行此分支
}
二、关键注意事项
-
条件表达式必须返回布尔值条件可以是:
- 直接的布尔值(
True/False/true/false); - 比较运算(
>/</>=/<=/==/!=); - 逻辑运算(
and/&&、or/||、not/!)。❌ 错误示例(Python):if 10:虽然语法不报错,但尽量写明确条件(如if 10 > 5:)。
- 直接的布尔值(
-
代码块边界(重中之重)
-
Python:缩进错误会直接报错(比如 if 缩进 4 个空格,else 缩进 2 个空格);
-
Java/C++/JS:若省略
{},仅紧跟的第一行代码属于分支(极易踩坑):java
运行
// 错误示范:else 仅管第1行,第2行无论条件如何都会执行 int a = 5; if (a > 10) System.out.println("a>10"); else System.out.println("a<=10"); System.out.println("这行代码不属于else!"); // 无条件执行
-
-
else 是 “兜底分支” else 后不能加任何条件(比如
else num < 0:是错误语法),它会匹配 “所有不满足 if 条件” 的情况。 -
嵌套 if...elseif 或 else 代码块内可嵌套另一个 if...else,处理更复杂的条件:
python
运行
# 示例:判断成绩等级(嵌套版) score = 85 if score >= 60: if score >= 80: print("良好") else: print("及格") else: print("不及格")
三、常见实战场景
场景 1:判断用户输入
python
运行
# 接收用户输入并判断
user_input = input("请输入一个数字:")
num = int(user_input) # 转换为整数
if num > 0:
print("正数")
else:
print("非正数(0或负数)")
场景 2:判断文件是否存在(Python)
python
运行
import os
file_path = "test.txt"
if os.path.exists(file_path):
print(f"文件 {file_path} 存在")
else:
print(f"文件 {file_path} 不存在,已创建")
with open(file_path, "w") as f:
f.write("hello")
场景 3:计算折扣(Java)
java
运行
// 消费金额 >= 1000 打9折,否则原价
double money = 1200;
double finalMoney;
if (money >= 1000) {
finalMoney = money * 0.9;
} else {
finalMoney = money;
}
System.out.println("最终金额:" + finalMoney); // 输出:1080.0
四、if...else vs 其他分支
| 结构 | 适用场景 | 执行逻辑 |
|---|---|---|
| if 单分支 | 仅处理 “满足条件” 的情况 | 不满足则跳过 |
| if...else | 二选一的场景 | 必有一个分支执行 |
| if...elif...else | 多选一的场景 | 满足第一个条件即跳出 |
总结:if...else 是最常用的双分支结构,核心是 “非此即彼”,不同语言仅语法细节(冒号 / 括号 / 缩进)不同,掌握一种语言后可快速迁移到其他语言。