首页/@claw-academy

第 10 章:写代码

龙虾学堂
龙虾学堂2026年3月23日

学会让 AI 编写代码

第 10 章:写代码 ⭐

本章解决什么问题:学会让 AI 编写代码

学习目标:能够用自然语言让 AI 编写函数、创建文件、遵循代码规范

版本基准:OpenClaw 3.13 前置条件:已完成第 9 章(PDF 处理)


📋 实测验证说明:本章所有代码示例均经过实测验证,确保代码可正确运行。


10.1 编写简单函数

让 AI 帮你编写代码,快速实现功能。

基本用法

在 Telegram 中发送

写一个 Python 函数,计算两个数的和

AI 回复(实测):

好的,已创建 add.py 文件:

```python
def add(a, b):
    """计算两个数的和"""
    return a + b

# 测试
if __name__ == "__main__":
    print(add(3, 5))  # 输出:8

文件已保存到当前目录。需要我帮你运行测试吗?


> **🔍 实测说明**:实测时间 2026-03-20,AI 调用 write 工具创建文件

> **💡 新手建议**:描述代码功能时尽量具体,包括语言、输入输出、特殊要求等。

---

## 10.2 不同场景的代码编写

### 场景一:编写工具函数

**发送**:

写一个 JavaScript 函数,判断一个数是否为偶数


**AI 回复**(实测):

好的,已创建 is-even.js 文件:

/**
 * 判断一个数是否为偶数
 * @param {number} num - 要判断的数字
 * @returns {boolean} - 如果是偶数返回 true,否则返回 false
 */
function isEven(num) {
    return num % 2 === 0;
}

// 测试
console.log(isEven(4));  // true
console.log(isEven(7));  // false

文件已保存。需要添加更多测试用例吗?


### 场景二:编写数据处理代码

**发送**:

写一个 Python 脚本,读取 CSV 文件并统计每列的平均值


**AI 回复**(实测):

好的,已创建 csv_stats.py 文件:

import csv

def calculate_averages(filename):
    """读取 CSV 文件并计算每列的平均值"""
    with open(filename, 'r', encoding='utf-8') as f:
        reader = csv.reader(f)
        headers = next(reader)
        
        # 初始化每列的总和和计数
        sums = [0] * len(headers)
        counts = [0] * len(headers)
        
        # 读取数据
        for row in reader:
            for i, value in enumerate(row):
                try:
                    sums[i] += float(value)
                    counts[i] += 1
                except ValueError:
                    pass  # 跳过非数字值
        
        # 计算平均值
        averages = []
        for i in range(len(headers)):
            if counts[i] > 0:
                avg = sums[i] / counts[i]
                averages.append(f"{headers[i]}: {avg:.2f}")
            else:
                averages.append(f"{headers[i]}: N/A")
        
        return averages

# 使用示例
if __name__ == "__main__":
    results = calculate_averages('data.csv')
    for result in results:
        print(result)

文件已保存。使用示例:

python csv_stats.py

需要我帮你创建测试数据吗?


### 场景三:编写 API 调用代码

**发送**:

写一个 Node.js 脚本,调用 GitHub API 获取用户信息


**AI 回复**(实测):

好的,已创建 github-user.js 文件:

const https = require('https');

/**
 * 获取 GitHub 用户信息
 * @param {string} username - GitHub 用户名
 */
function getUserInfo(username) {
    const options = {
        hostname: 'api.github.com',
        path: `/users/${username}`,
        method: 'GET',
        headers: {
            'User-Agent': 'Node.js',
            'Accept': 'application/vnd.github.v3+json'
        }
    };

    https.get(options, (res) => {
        let data = '';
        
        res.on('data', (chunk) => {
            data += chunk;
        });
        
        res.on('end', () => {
            const user = JSON.parse(data);
            console.log(`用户名:${user.login}`);
            console.log(`姓名:${user.name || '未设置'}`);
            console.log(`仓库数:${user.public_repos}`);
            console.log(`关注者:${user.followers}`);
        });
    }).on('error', (err) => {
        console.error('请求失败:', err.message);
    });
}

// 使用示例
getUserInfo('openclaw');

文件已保存。运行方式:

node github-user.js

需要我帮你添加错误处理或更多功能吗?


### 场景四:编写完整项目

**发送**:

创建一个简单的 Express 服务器,有首页和 API 接口


**AI 回复**(实测):

好的,创建 Express 项目结构:

已创建文件

  1. package.json
{
  "name": "simple-express-app",
  "version": "1.0.0",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.18.0"
  }
}
  1. server.js
const express = require('express');
const app = express();
const PORT = 3000;

// 首页
app.get('/', (req, res) => {
    res.send('<h1>欢迎访问!</h1><p>这是一个简单的 Express 服务器</p>');
});

// API 接口
app.get('/api/hello', (req, res) => {
    res.json({ message: 'Hello, World!' });
});

app.get('/api/time', (req, res) => {
    res.json({ time: new Date().toISOString() });
});

// 启动服务器
app.listen(PORT, () => {
    console.log(`服务器运行在 http://localhost:${PORT}`);
});

运行步骤

npm install
npm start

然后访问:

需要我帮你添加更多功能吗?


---

## 10.3 高级用法

### 指定代码规范

**发送**:

写一个 Python 函数,使用 Type Hints,遵循 PEP 8 规范


**AI 回复**(实测):

好的,已创建 typed_function.py 文件:

from typing import List, Optional


def greet(name: str, greeting: Optional[str] = None) -> str:
    """
    生成问候语。
    
    Args:
        name: 被问候人的姓名
        greeting: 问候语,默认为 "Hello"
    
    Returns:
        完整的问候语字符串
    """
    if greeting is None:
        greeting = "Hello"
    return f"{greeting}, {name}!"


def calculate_sum(numbers: List[int]) -> int:
    """
    计算数字列表的总和。
    
    Args:
        numbers: 整数列表
    
    Returns:
        所有数字的总和
    """
    return sum(numbers)


if __name__ == "__main__":
    print(greet("Alice"))  # Hello, Alice!
    print(greet("Bob", "Hi"))  # Hi, Bob!
    print(calculate_sum([1, 2, 3, 4, 5]))  # 15

文件已保存,代码遵循 PEP 8 规范,包含 Type Hints 和文档字符串。


### 添加单元测试

**发送**:

写一个计算器类,包含加减乘除,并添加单元测试


**AI 回复**(实测):

好的,创建计算器和测试文件:

1. calculator.py

class Calculator:
    """简单的计算器类"""
    
    def add(self, a: float, b: float) -> float:
        """加法"""
        return a + b
    
    def subtract(self, a: float, b: float) -> float:
        """减法"""
        return a - b
    
    def multiply(self, a: float, b: float) -> float:
        """乘法"""
        return a * b
    
    def divide(self, a: float, b: float) -> float:
        """除法"""
        if b == 0:
            raise ValueError("除数不能为零")
        return a / b

2. test_calculator.py

import unittest
from calculator import Calculator


class TestCalculator(unittest.TestCase):
    """计算器测试类"""
    
    def setUp(self):
        self.calc = Calculator()
    
    def test_add(self):
        self.assertEqual(self.calc.add(2, 3), 5)
    
    def test_subtract(self):
        self.assertEqual(self.calc.subtract(5, 3), 2)
    
    def test_multiply(self):
        self.assertEqual(self.calc.multiply(4, 3), 12)
    
    def test_divide(self):
        self.assertEqual(self.calc.divide(10, 2), 5)
    
    def test_divide_by_zero(self):
        with self.assertRaises(ValueError):
            self.calc.divide(10, 0)


if __name__ == "__main__":
    unittest.main()

运行测试

python -m unittest test_calculator.py

需要我帮你运行测试吗?


---

## 10.4 练习时间

### 练习 1:编写函数

**发送**:

写一个 Python 函数,判断一个字符串是否是回文


观察 AI 如何编写代码。

### 练习 2:编写脚本

**发送**:

写一个 Node.js 脚本,读取当前目录的所有文件并列出文件名


练习让 AI 编写实用脚本。

### 练习 3:添加测试

**发送**:

给我刚才创建的回文函数添加单元测试


练习让 AI 编写测试代码。

---

## 10.5 常见问题

### Q1:AI 支持哪些编程语言?

**支持的语言**:
- ✅ Python、JavaScript、TypeScript
- ✅ Java、C++、C#
- ✅ Go、Rust、Ruby
- ✅ PHP、Swift、Kotlin
- ✅ HTML、CSS、SQL
- 以及大多数主流编程语言

### Q2:AI 写的代码可靠吗?

**说明**:
- AI 生成的代码通常可以运行
- 但建议 review 后再使用
- 复杂逻辑需要人工验证

### Q3:AI 能理解现有代码吗?

**说明**:
- 可以读取并理解代码
- 可以解释代码功能
- 可以提出改进建议

### Q4:AI 能帮我调试代码吗?

**说明**:
- 可以分析错误信息
- 可以定位问题
- 可以提供修复建议

---

## ✅ 你已解锁能力

| 能力 | 状态 |
|------|------|
| 让 AI 编写函数 | ✅ 已掌握 |
| 让 AI 编写脚本 | ✅ 已掌握 |
| 让 AI 创建项目 | ✅ 已掌握 |
| 让 AI 添加测试 | ✅ 已掌握 |

---

## 📊 自测题(3 题)

### 1. 如何让 AI 遵循特定代码规范?

**答案**:在请求中说明,如"使用 Type Hints,遵循 PEP 8 规范"

### 2. AI 支持哪些编程语言?

**答案**:大多数主流编程语言,包括 Python、JavaScript、Java 等

### 3. 如何让 AI 为代码添加测试?

**答案**:在请求中说明"并添加单元测试"

---

## 🎯 下一章预告

第 11 章:改代码

你将学会:
- 让 AI 重构代码
- 让 AI 优化性能
- 让 AI 修复 bug

**提前试试**:

优化这个函数的性能(发送一段代码)


> 本文由郭峰主导,基于 GPT-5.4、OpenClaw Agent 完成,并经人工审校定稿。

---

> **课后练习**(可选)
> 1. 让 AI 编写一个实用函数
> 2. 让 AI 编写一个完整脚本
> 3. 让 AI 为代码添加测试
> 
> 有任何问题,随时在群里提问! 🚀
#openclaw#tutorial#教程