AI提示词教程

全面的AI提示词百科全书,涵盖各种场景和行业的提示词技巧和示例

编程开发提示词

返回首页

编程开发是AI提示词的重要应用场景,涵盖代码生成、调试、优化、文档编写等多个方面。本章节将介绍各种编程开发场景的提示词技巧和示例。

1. 代码生成

代码生成提示词需要明确编程语言、功能需求和格式要求,以便AI生成符合要求的代码。

示例1:Python函数生成
请用Python编写一个函数,用于计算斐波那契数列的第n项,要求使用递归方法,并添加适当的注释和类型提示。

Python斐波那契数列递归函数

def fibonacci(n: int) -> int:
    """
    计算斐波那契数列的第n项
    
    参数:
        n: 斐波那契数列的项数(从0开始)
        
    返回:
        斐波那契数列的第n项
    
    示例:
        >>> fibonacci(0)
        0
        >>> fibonacci(1)
        1
        >>> fibonacci(10)
        55
    """
    # 基本情况:第0项是0,第1项是1
    if n == 0:
        return 0
    elif n == 1:
        return 1
    # 递归情况:第n项等于前两项之和
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)
提示词技巧:
  • 明确编程语言
  • 描述功能需求
  • 指定实现方法
  • 要求添加注释和类型提示
示例2:HTML表单生成
请用HTML和CSS编写一个用户注册表单,包含用户名、邮箱、密码、确认密码字段,以及提交按钮,要求表单样式美观,有基本的验证功能。

HTML用户注册表单

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>用户注册</title>
    <style>
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }
        
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f4;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
        }
        
        .container {
            background-color: white;
            padding: 2rem;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
            width: 100%;
            max-width: 400px;
        }
        
        h2 {
            text-align: center;
            margin-bottom: 1.5rem;
            color: #333;
        }
        
        .form-group {
            margin-bottom: 1rem;
        }
        
        label {
            display: block;
            margin-bottom: 0.5rem;
            color: #555;
            font-weight: bold;
        }
        
        input[type="text"],
        input[type="email"],
        input[type="password"] {
            width: 100%;
            padding: 0.75rem;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-size: 1rem;
        }
        
        input[type="text"]:focus,
        input[type="email"]:focus,
        input[type="password"]:focus {
            outline: none;
            border-color: #667eea;
            box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.2);
        }
        
        .error-message {
            color: #dc3545;
            font-size: 0.875rem;
            margin-top: 0.25rem;
        }
        
        button[type="submit"] {
            width: 100%;
            padding: 0.75rem;
            background-color: #667eea;
            color: white;
            border: none;
            border-radius: 4px;
            font-size: 1rem;
            font-weight: bold;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        
        button[type="submit"]:hover {
            background-color: #5568d3;
        }
    </style>
</head>
<body>
    <div class="container">
        <h2>用户注册</h2>
        <form id="registerForm">
            <div class="form-group">
                <label for="username">用户名</label>
                <input type="text" id="username" name="username" required minlength="3" maxlength="20">
                <div class="error-message" id="usernameError"></div>
            </div>
            
            <div class="form-group">
                <label for="email">邮箱</label>
                <input type="email" id="email" name="email" required>
                <div class="error-message" id="emailError"></div>
            </div>
            
            <div class="form-group">
                <label for="password">密码</label>
                <input type="password" id="password" name="password" required minlength="6">
                <div class="error-message" id="passwordError"></div>
            </div>
            
            <div class="form-group">
                <label for="confirmPassword">确认密码</label>
                <input type="password" id="confirmPassword" name="confirmPassword" required>
                <div class="error-message" id="confirmPasswordError"></div>
            </div>
            
            <button type="submit">注册</button>
        </form>
    </div>
    
    <script>
        document.getElementById('registerForm').addEventListener('submit', function(e) {
            e.preventDefault();
            
            // 清除之前的错误信息
            const errorElements = document.querySelectorAll('.error-message');
            errorElements.forEach(el => el.textContent = '');
            
            // 获取表单数据
            const username = document.getElementById('username').value;
            const email = document.getElementById('email').value;
            const password = document.getElementById('password').value;
            const confirmPassword = document.getElementById('confirmPassword').value;
            
            // 验证表单
            let isValid = true;
            
            if (username.length < 3 || username.length > 20) {
                document.getElementById('usernameError').textContent = '用户名长度必须在3-20个字符之间';
                isValid = false;
            }
            
            // 简单的邮箱格式验证
            const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
            if (!emailRegex.test(email)) {
                document.getElementById('emailError').textContent = '请输入有效的邮箱地址';
                isValid = false;
            }
            
            if (password.length < 6) {
                document.getElementById('passwordError').textContent = '密码长度必须至少为6个字符';
                isValid = false;
            }
            
            if (password !== confirmPassword) {
                document.getElementById('confirmPasswordError').textContent = '两次输入的密码不一致';
                isValid = false;
            }
            
            if (isValid) {
                // 表单验证通过,提交表单
                alert('注册成功!');
                this.reset();
            }
        });
    </script>
</body>
</html>
提示词技巧:
  • 明确所需的技术栈(HTML和CSS)
  • 描述表单包含的字段
  • 要求样式美观
  • 指定需要的功能(基本验证)

2. 代码调试

代码调试提示词需要提供有问题的代码和错误信息,以便AI帮助找出并修复问题。

示例1:Python代码调试
下面的Python代码有问题,运行时会报错,请帮我找出并修复问题: ```python def calculate_average(numbers): sum = 0 for number in numbers: sum += number average = sum / len(numbers) return average # 测试代码 numbers = [1, 2, 3, 4, 5] print(f"平均值:{calculate_average(numbers)}") # 空列表测试 empty_list = [] print(f"空列表平均值:{calculate_average(empty_list)}") ``` 错误信息: ``` ZeroDivisionError: division by zero ```

代码调试结果

问题分析:当传入空列表时,`len(numbers)` 为 0,导致执行 `average = sum / len(numbers)` 时出现 `ZeroDivisionError: division by zero` 错误。

修复方案:在计算平均值之前,添加对空列表的检查,返回适当的默认值或抛出更友好的错误信息。

def calculate_average(numbers):
    """
    计算列表中数字的平均值
    
    参数:
        numbers: 包含数字的列表
        
    返回:
        列表中数字的平均值,如果列表为空则返回 0
    """
    # 检查列表是否为空
    if not numbers:
        return 0
    
    sum = 0
    for number in numbers:
        sum += number
    average = sum / len(numbers)
    return average

# 测试代码
numbers = [1, 2, 3, 4, 5]
print(f"平均值:{calculate_average(numbers)}")

# 空列表测试
empty_list = []
print(f"空列表平均值:{calculate_average(empty_list)}")

或者,如果你希望在传入空列表时抛出更友好的错误信息,可以使用以下方案:

def calculate_average(numbers):
    """
    计算列表中数字的平均值
    
    参数:
        numbers: 包含数字的列表
        
    返回:
        列表中数字的平均值
        
    抛出:
        ValueError: 如果列表为空
    """
    # 检查列表是否为空
    if not numbers:
        raise ValueError("无法计算空列表的平均值")
    
    sum = 0
    for number in numbers:
        sum += number
    average = sum / len(numbers)
    return average

# 测试代码
numbers = [1, 2, 3, 4, 5]
print(f"平均值:{calculate_average(numbers)}")

# 空列表测试
try:
    empty_list = []
    print(f"空列表平均值:{calculate_average(empty_list)}")
except ValueError as e:
    print(f"错误:{e}")
提示词技巧:
  • 提供完整的有问题代码
  • 包含错误信息
  • 描述预期行为
  • 要求解释问题原因和修复方案

3. 代码优化

代码优化提示词需要提供现有代码和优化目标,以便AI帮助改进代码的性能、可读性或可维护性。

示例1:Python代码优化
请优化下面的Python代码,提高其性能和可读性: ```python def find_duplicates(numbers): duplicates = [] for i in range(len(numbers)): for j in range(i+1, len(numbers)): if numbers[i] == numbers[j] and numbers[i] not in duplicates: duplicates.append(numbers[i]) return duplicates # 测试代码 numbers = [1, 2, 3, 4, 5, 2, 3, 6, 7, 8, 9, 10, 1] print(f"重复元素:{find_duplicates(numbers)}") ```

代码优化结果

问题分析:原代码使用嵌套循环查找重复元素,时间复杂度为O(n²),对于大型列表效率较低。同时,在每次添加元素前都检查是否已存在,进一步降低了性能。

优化方案:使用集合(set)来跟踪已经看到的元素和重复元素,将时间复杂度降低到O(n)。

def find_duplicates(numbers):
    """
    查找列表中的重复元素
    
    参数:
        numbers: 包含数字的列表
        
    返回:
        包含重复元素的列表
    """
    seen = set()
    duplicates = set()
    
    for number in numbers:
        if number in seen:
            duplicates.add(number)
        else:
            seen.add(number)
    
    # 将集合转换为列表返回
    return list(duplicates)

# 测试代码
numbers = [1, 2, 3, 4, 5, 2, 3, 6, 7, 8, 9, 10, 1]
print(f"重复元素:{find_duplicates(numbers)}")

优化后的代码:

  1. 时间复杂度从O(n²)降低到O(n),性能更好
  2. 代码更简洁,可读性更高
  3. 使用集合自动去重,避免了额外的检查
提示词技巧:
  • 提供完整的现有代码
  • 明确优化目标(性能、可读性、可维护性等)
  • 要求解释优化思路
  • 可以指定特定的优化方向(如时间复杂度、空间复杂度等)

4. 编程开发提示词技巧

  • 明确编程语言:指定你想要使用的编程语言,确保AI生成相应的代码
  • 详细描述功能:清晰地描述你想要实现的功能,包括输入输出示例
  • 指定实现要求:如算法类型、代码风格、性能要求等
  • 提供上下文:如果代码是更大项目的一部分,提供相关的上下文信息
  • 添加注释和文档:要求AI在代码中添加适当的注释和文档字符串
  • 测试用例:提供测试用例,确保生成的代码符合预期
  • 逐步细化:对于复杂的功能,可以先描述整体需求,然后逐步细化各个部分