DeepSeek代码生成、改写

2025-02-21 57
DeepSeek

类型:人工智能

简介:一款基于深度学习和自然语言处理技术的产品,人气赶超ChatGPT。

DeepSeek不仅支持基本的对话功能,还提供代码生成和代码改写服务。本文将基于这两个功能进行详细介绍,分别给出一些示例代码,仅供参考。

一、DeepSeek代码生成

让模型生成一段完成特定功能的代码。

1、提示词

请帮我用 HTML 生成一个五子棋游戏,所有代码都保存在一个 HTML 中。

2、样例输出

当然!下面是一个简单的五子棋游戏的 HTML 代码。这个代码包含了一个基本的五子棋棋盘,玩家可以通过点击棋盘上的格子来下棋。游戏会检测是否有玩家获胜。

“`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>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f0f0f0;
font-family: Arial, sans-serif;
}
#board {
display: grid;
grid-template-columns: repeat(15, 30px);
grid-template-rows: repeat(15, 30px);
gap: 1px;
background-color: #d18b47;
padding: 10px;
border-radius: 5px;
}
.cell {
width: 30px;
height: 30px;
background-color: #ffce9e;
border: 1px solid #d18b47;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.cell.black::before, .cell.white::before {
content: ”;
width: 20px;
height: 20px;
border-radius: 50%;
}
.cell.black::before {
background-color: black;
}
.cell.white::before {
background-color: white;
}
#message {
margin-top: 20px;
font-size: 24px;
font-weight: bold;
}
</style>
</head>
<body>
<div id=”board”></div>
<div id=”message”></div>
<script>
const boardSize = 15;
let currentPlayer = ‘black’;
let board = Array.from({ length: boardSize }, () => Array(boardSize).fill(null));

function createBoard() {
const boardElement = document.getElementById(‘board’);
for (let i = 0; i < boardSize; i++) {
for (let j = 0; j < boardSize; j++) {
const cell = document.createElement(‘div’);
cell.classList.add(‘cell’);
cell.dataset.row = i;
cell.dataset.col = j;
cell.addEventListener(‘click’, handleCellClick);
boardElement.appendChild(cell);
}
}
}
function handleCellClick(event) {
const row = parseInt(event.target.dataset.row);
const col = parseInt(event.target.dataset.col);

if (board[row][col] !== null) return;

board[row][col] = currentPlayer;
event.target.classList.add(currentPlayer);

if (checkWin(row, col, currentPlayer)) {
document.getElementById(‘message’).textContent = `${currentPlayer === ‘black’ ? ‘黑棋’ : ‘白棋’}获胜!`;
document.querySelectorAll(‘.cell’).forEach(cell => cell.removeEventListener(‘click’, handleCellClick));
return;
}
currentPlayer = currentPlayer === ‘black’ ? ‘white’ : ‘black’;
}
function checkWin(row, col, player) {
const directions = [
{ dr: 0, dc: 1 },  // 水平
{ dr: 1, dc: 0 },  // 垂直
{ dr: 1, dc: 1 },  // 主对角线
{ dr: 1, dc: -1 }  // 副对角线
];
for (const { dr, dc } of directions) {
let count = 1;

// 检查一个方向
for (let i = 1; i < 5; i++) {
const r = row + dr * i;
const c = col + dc * i;
if (r < 0 || r >= boardSize || c < 0 || c >= boardSize || board[r][c] !== player) break;
count++;
}
// 检查相反方向
for (let i = 1; i < 5; i++) {
const r = row – dr * i;
const c = col – dc * i;
if (r < 0 || r >= boardSize || c < 0 || c >= boardSize || board[r][c] !== player) break;
count++;
}
if (count >= 5) return true;
}
return false;
}
createBoard();
</script>
</body>
</html>
“`
### 代码说明:
1. **HTML 结构**:
– `#board` 是棋盘的容器,使用 `grid` 布局来创建 15×15 的格子。
– `.cell` 是每个格子的样式,点击时会触发 `handleCellClick` 事件。
– `#message` 用于显示游戏结果。
2. **CSS 样式**:
– 棋盘和格子的样式,包括背景色、边框、棋子的样式等。
3. **JavaScript 逻辑**:
– `createBoard` 函数用于生成棋盘。
– `handleCellClick` 函数处理格子的点击事件,更新棋盘状态并检查是否获胜。
– `checkWin` 函数检查当前玩家是否在点击的位置上连成五子。
### 如何使用:
1. 将上述代码复制到一个 `.html` 文件中。
2. 在浏览器中打开该文件,即可开始游戏。
这个代码是一个简单的五子棋实现,你可以根据需要进一步扩展和优化。

2、代码

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”: “请帮我用 HTML 生成一个五子棋游戏,所有代码都保存在一个 HTML 中。”
}
]
)
print(completion.choices[0].message.content)

二、DeepSeek代码改写

对代码进行修改,来实现纠错、注释、调优等。

1、提示词

下面这段的代码的效率很低,且没有处理边界情况。请先解释这段代码的问题与解决方法,然后进行优化:

“`
def fib(n):
if n <= 2:
return n
return fib(n-1) + fib(n-2)
“`

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. **使用迭代代替递归**:递归虽然简洁,但在处理大规模数据时效率较低。可以使用迭代方法来计算斐波那契数列,避免递归深度限制。
### 优化后的代码
#### 方法一:记忆化递归
“`python
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]
“`
#### 方法二:迭代法
“`python
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`。
### 总结
优化后的代码不仅提高了效率,还完善了边界情况的处理。记忆化递归和迭代法都是有效的优化手段,具体选择哪种方法取决于具体需求和场景。

3、代码

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“`\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)

  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。