# Part 3 · 编程语言基础：写出会"思考"的代码

> **本篇定位**：用一篇打尽编程语法最小子集。学完本篇，你能独立写出有逻辑的脚本。
> **阅读时长**：30 分钟
> **心流产出**：写一个能根据用户输入做不同响应的命令行小程序。

---

## 一、为什么 AI 编程也要学语法？

AI 编程的实质是"用代码调用 API"。**代码本身就是与 API 对话的脚手架**。不懂语法，就像不会写字却想写情书——只能请人代笔，效率与可控性都极差。

本章用 **Python** 作为教学语言（语法最接近自然语言，AI 生态最完善），但概念对 **JavaScript / Go / Java** 等语言同样适用。

---

## 二、第一个程序：Hello, World

```python
# 这一行是注释，程序不会执行
print("Hello, World!")
```

运行后输出：

```
Hello, World!
```

> **心流点**：立刻就能看到结果。这就是编程最让人上瘾的地方。

---

## 三、变量：给数据起个名字

```python
# 变量 = 数据的"标签"
name = "小明"           # 字符串（文字）
age = 18                # 整数
height = 1.75           # 浮点数（小数）
is_student = True       # 布尔值（真/假）

print(name, age, height, is_student)
# 输出：小明 18 1.75 True
```

**类比**：变量就是贴了标签的收纳盒，盒子里放什么值，标签就代表什么。

---

## 四、数据类型：盒子里能装什么

| 类型 | 含义 | 例子 |
| --- | --- | --- |
| `str`（字符串） | 文字 | `"你好"` |
| `int`（整数） | 没有小数点的数字 | `42` |
| `float`（浮点数） | 带小数点的数字 | `3.14` |
| `bool`（布尔） | 真或假 | `True` / `False` |
| `list`（列表） | 一组有序数据 | `[1, 2, 3]` |
| `dict`（字典） | 键值对 | `{"name": "小明", "age": 18}` |

> **小贴士**：AI 接口返回的数据 99% 是 `list` 和 `dict`——搞懂这两个就成功一半。

---

## 五、函数：把一段动作"打包"

```python
# def = define（定义）
def greet(name):
    return f"你好，{name}！"

print(greet("世界"))    # 输出：你好，世界！
print(greet("AI"))      # 输出：你好，AI！
```

**类比**：函数就是一台"自动售货机"——你投入参数（钱），它返回结果（饮料）。

> **关键认知**：**调用 AI 本身就是一个函数**：`response = ask_ai("你好")`。理解函数 → 理解所有 API 调用。

---

## 六、判断语句：让程序"选择"

```python
age = 20

if age < 18:
    print("未成年")
elif age < 60:
    print("成年人")
else:
    print("老年人")
```

**类比**：判断语句就是十字路口的指示牌——根据条件走不同分支。

---

## 七、循环语句：让程序"重复"

```python
# for 循环：遍历一个集合
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
    print(f"我爱吃{fruit}")

# while 循环：满足条件就继续
count = 0
while count < 3:
    print(f"第{count+1}次循环")
    count += 1
```

**类比**：循环就是"流水线工人"——同一套动作重复 N 遍。

---

## 八、类：把数据和动作"打包"成一类事物

```python
class Dog:
    def __init__(self, name):    # 构造函数
        self.name = name         # 属性：名字

    def bark(self):              # 方法：会叫
        print(f"{self.name}: 汪汪！")

my_dog = Dog("旺财")
my_dog.bark()    # 输出：旺财: 汪汪！
```

**类比**：类就是"产品图纸"，实例就是"按图纸造出来的实物"。

> **关键认知**：绝大多数 AI SDK（如 OpenAI 的 `OpenAI()`）都用了"类"的设计。理解了类，看 SDK 文档就不发怵。

---

## 九、组合实战：写一个"心情回应"小程序

```python
def mood_responder():
    mood = input("你现在心情如何？（开心/难过/一般）")
    
    if mood == "开心":
        print("太棒了！希望你一直保持好心情！")
    elif mood == "难过":
        print("抱抱你，要不要听首歌放松一下？")
    elif mood == "一般":
        print("那就先专注手头的事吧，会好起来的。")
    else:
        print("我还没学会识别这种心情，但愿意倾听。")

mood_responder()
```

**这就是一个完整的"有判断、有输入、有输出"的程序。** 你刚写出了一个会"思考"的脚本。

---

## 十、JS / Go / Java 对照速览（选学）

| 概念 | Python | JavaScript | Go | Java |
| --- | --- | --- | --- | --- |
| 输出 | `print()` | `console.log()` | `fmt.Println()` | `System.out.println()` |
| 变量 | `name = "x"` | `let name = "x"` | `name := "x"` | `String name = "x";` |
| 函数 | `def f():` | `function f() {}` | `func f() {}` | `public void f() {}` |
| 判断 | `if x:` | `if (x) {}` | `if x {}` | `if (x) {}` |
| 循环 | `for i in list:` | `for (let i of list) {}` | `for i := range list {}` | `for (int i : list) {}` |

> 看到没？**所有语言的逻辑结构都长得差不多**——这就是编程"会一个就会一类"的原因。

---

## 十一、本篇动手任务（30 分钟）

### 任务 A：改造心情回应器

在第九节程序基础上，加入：
- 连续 3 次输入"开心"后，打印"你今天真开心呀！"
- 输入 `exit` 退出程序。

提示：用 `while True` + `break`。

### 任务 B：写一个"AI 模拟器"

```python
def fake_ai(question):
    # 用判断/字典实现简单问答
    answers = {
        "你好": "你好！我是模拟 AI。",
        "天气": "今天阳光明媚。",
        "再见": "下次再聊～"
    }
    return answers.get(question, "这个问题我还在学习。")

while True:
    q = input("你问：")
    if q == "exit":
        break
    print("AI：" + fake_ai(q))
```

跑通后，**你已经掌握了"调用函数"的核心模式**——下一篇我们把这个"假 AI"换成"真 AI"。

---

## 十二、进入下一篇

基础已立。进入 [Part 4 · 用代码调用 AI](./p4-用代码调用AI.md)，我们要把 `fake_ai` 替换成真正的 OpenAI / 国产大模型。
