95%人都不知道的,或许是最全DeepSeek 提示词合集、使用技巧与代码实现全攻略【建议收藏】

一、引言

DeepSeek 作为一款强大的 AI 大语言模型工具,凭借其高效、灵活的特点,受到了众多开发者和用户的青睐。本文将全面介绍 DeepSeek 的提示词合集、使用技巧以及代码实现方法,帮助读者更好地利用这一工具,提升工作效率和创造力。

二、DeepSeek 提示词合集

(一)代码处理

  1. 代码改写:优化代码,进行纠错、注释、调优等。
    • 示例:请对以下代码进行优化,提高运行效率:[代码片段]
对代码进行修改,来实现纠错、注释、调优等。
提示词

USER	
下面这段的代码的效率很低,且没有处理边界情况。请先解释这段代码的问题与解决方法,然后进行优化:
def fib(n):
    if n <= 2:
        return n
    return fib(n-1) + fib(n-2)
样例输出
问题分析
这段代码实现了一个递归的斐波那契数列计算函数 fib(n)。虽然代码简洁,但它存在以下几个问题:
1. 重复计算:递归调用会导致大量的重复计算。例如,计算 fib(5) 时,fib(3) 和 fib(2) 会被多次计算,导致效率低下。
2. 边界情况处理不完善:虽然代码中处理了 n <= 2 的情况,但没有处理 n < 0 的情况。对于负数输入,函数会返回不正确的结果。
3. 递归深度限制:对于较大的 n,递归深度可能会超过 Python 的默认递归深度限制,导致 RecursionError。
解决方法
1. 使用记忆化(Memoization):通过缓存已经计算过的斐波那契数列值,避免重复计算,提高效率。
2. 处理边界情况:增加对 n < 0 的检查,并返回适当的错误信息或默认值。
3. 使用迭代代替递归:递归虽然简洁,但在处理大规模数据时效率较低。可以使用迭代方法来计算斐波那契数列,避免递归深度限制。
优化后的代码
方法一:记忆化递归
def fib(n, memo={}):
    if n < 0:
        raise ValueError("Input must be a non-negative integer")
    if n <= 2:
        return 1
    if n in memo:
        return memo[n]
    memo[n] = fib(n-1, memo) + fib(n-2, memo)
    return memo[n]
方法二:迭代法
def fib(n):
    if n < 0:
        raise ValueError("Input must be a non-negative integer")
    if n <= 2:
        return 1
    
    a, b = 1, 1
    for _ in range(3, n+1):
        a, b = b, a + b
    return b
解释
1. 记忆化递归:
  ○ 使用一个字典 memo 来存储已经计算过的斐波那契数列值。
  ○ 在每次递归调用前,先检查 memo 中是否已经有结果,如果有则直接返回,避免重复计算。
  ○ 处理了 n < 0 的情况,抛出 ValueError。
2. 迭代法:
  ○ 使用两个变量 a 和 b 来保存前两个斐波那契数列值。
  ○ 通过循环从 3 到 n 计算斐波那契数列值,避免了递归调用,提高了效率。
  ○ 同样处理了 n < 0 的情况,抛出 ValueError。
总结
优化后的代码不仅提高了效率,还完善了边界情况的处理。记忆化递归和迭代法都是有效的优化手段,具体选择哪种方法取决于具体需求和场景。
代码
from openai import OpenAI
client = OpenAI(
    base_url="https://api.deepseek.com/",
    api_key="" )
completion = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {
                "role": "user",
                "content": "下面这段的代码的效率很低,且没有处理边界情况。请先解释这段代码的问题与解决方法,然后进行优化:\n``\ndef fib(n):\n    if n <= 2:\n        return n\n    return fib(n-1) + fib(n-2)\n``"
        }
    ]
)
print(completion.choices[0].message.content)
  1. 代码解释:分析代码逻辑,帮助理解代码内容。
    • 示例:解释这段代码的作用:[代码片段]
对代码进行解释,来帮助理解代码内容。

提示词
USER	
请解释下面这段代码的逻辑,并说明完成了什么功能:
```
// weight数组的大小 就是物品个数
for(int i = 1; i < weight.size(); i++) { // 遍历物品
    for(int j = 0; j <= bagweight; j++) { // 遍历背包容量
        if (j < weight[i]) dp[i][j] = dp[i - 1][j];
        else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
    }
}
```
样例输出
这段代码实现了一个经典的动态规划问题,通常用于解决“0/1背包问题”。下面是对代码逻辑的详细解释:

### 代码逻辑解释

1. **初始化与遍历**:
   - `weight` 数组表示每个物品的重量。
   - `value` 数组表示每个物品的价值。
   - `bagweight` 表示背包的最大容量。
   - `dp` 是一个二维数组,`dp[i][j]` 表示前 `i` 个物品在背包容量为 `j` 时的最大价值。

2. **外层循环**:
   ```cpp
   for(int i = 1; i < weight.size(); i++) { // 遍历物品
   ```
   - 外层循环从第1个物品开始遍历到最后一个物品(`weight.size()`)。

3. **内层循环**:
   ```cpp
   for(int j = 0; j <= bagweight; j++) { // 遍历背包容量
   ```
   - 内层循环从背包容量为0开始遍历到背包的最大容量(`bagweight`)。

4. **状态转移方程**:
   ```cpp
   if (j < weight[i]) dp[i][j] = dp[i - 1][j];
   else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
   ```
   - 如果当前背包容量 `j` 小于第 `i` 个物品的重量 `weight[i]`,则无法放入该物品,状态保持不变,即 `dp[i][j] = dp[i - 1][j]`。
   - 否则,可以选择放入或不放入第 `i` 个物品:
     - 不放入第 `i` 个物品时,最大价值为 `dp[i - 1][j]`。
     - 放入第 `i` 个物品时,最大价值为 `dp[i - 1][j - weight[i]] + value[i]`,即在放入物品前的最大价值加上当前物品的价值。
     - 取两者的最大值,即 `dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i])`。

### 功能说明

这段代码的功能是计算在给定背包容量 `bagweight` 下,选择不同物品组合所能获得的最大价值。具体来说,它通过动态规划的方法,逐步构建一个二维数组 `dp`,其中 `dp[i][j]` 表示前 `i` 个物品在背包容量为 `j` 时的最大价值。最终,`dp[weight.size() - 1][bagweight]` 就是所求的最大价值。

### 总结

- **输入**:`weight` 数组(物品重量),`value` 数组(物品价值),`bagweight`(背包容量)。
- **输出**:在背包容量为 `bagweight` 时,选择不同物品组合所能获得的最大价值。
- **算法**:动态规划,通过构建二维数组 `dp` 来记录每一步的最优解。
代码
from openai import OpenAI

client = OpenAI(
    base_url="https://api.deepseek.com/",
    api_key="<YOUR_API_KEY>"
)

completion = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {
                "role": "user",
                "content": "请解释下面这段代码的逻辑,并说明完成了什么功能:\n```\n// weight数组的大小 就是物品个数\nfor(int i = 1; i < weight.size(); i++) { // 遍历物品\n    for(int j = 0; j <= bagweight; j++) { // 遍历背包容量\n        if (j < weight[i]) dp[i][j] = dp[i - 1][j];\n        else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);\n    }\n}\n```"
        }
    ]
)

print(completion.choices[0].message.content)
  1. 代码生成:根据需求生成特定功能的代码片段。
    • 示例:生成一个实现快速排序算法的 Python 代码
让模型生成一段完成特定功能的代码。

提示词
USER	
请帮我用 HTML 生成一个五子棋游戏,所有代码都保存在一个 HTML 中。
样例输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大F的智能小课

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值