if...else 语句

97 阅读4分钟

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("不及格");  // 执行此分支
}

二、关键注意事项

  1. 条件表达式必须返回布尔值条件可以是:

    • 直接的布尔值(True/False/true/false);
    • 比较运算(>/</>=/<=/==/!=);
    • 逻辑运算(and/&&or/||not/!)。❌ 错误示例(Python):if 10: 虽然语法不报错,但尽量写明确条件(如 if 10 > 5:)。
  2. 代码块边界(重中之重)

    • 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!");  // 无条件执行
      
  3. else 是 “兜底分支” else 后不能加任何条件(比如 else num < 0: 是错误语法),它会匹配 “所有不满足 if 条件” 的情况。

  4. 嵌套 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 是最常用的双分支结构,核心是 “非此即彼”,不同语言仅语法细节(冒号 / 括号 / 缩进)不同,掌握一种语言后可快速迁移到其他语言。