顾乔芝士网

持续更新的前后端开发技术栈

DeepSeek写代码能力分析

最近一直在捣鼓deepseek,之前听说过可以用chatgpt来写代码,那么用deepseek来写代码效果如何呢?我尝试用来写python代码,为了测试不同大小模型效果,我把deepseek的1.5B,8B,14B,32B,70B等5个模型都测试了一遍。为了能运行70B的模型我还把电脑的内存扩容到64G了(70B模型至少需要42G内存才能运行),幸好现在内存是白菜价,2根16G的DDR4,400元有找了。

一、先说测试结果

1、1.5B和8B模型编写的代码编写能力较差,基本不能给出完整的代码或给出的代码是无法运行的;

2、14B模型编写的代码的能力不稳定,写出来的代码有时能用有时又不能用,BUG较多,如果熟悉代码的话,人工调试后是能用的。

3、32B模型编写的代码基本问题不大,编写一些小工具,小游戏基本不用调试可以直接使用。只是32B对电脑硬件要求比较高了,需要占用20G显存,目前能满足这么大显存的显卡最便宜的只有魔改的RTX2080ti 22G,要2500左右,然后就是RTX4090之类的了,价格更高,如果显存不够的话只能用电脑内存来运行,速度较慢,我电脑每秒只能出3个字。

4、70B模型编写代码的能力肯定比32B要强的,但是由于我电脑运行70B的速度太慢了,我的电脑每秒只能蹦出1个字,因此没有做详细测试。

5、上面说的4个都是本地部署的,那么线上的效果如何呢?我也试了用手机的deepseek APP写代码,基本也没问题,AI的思路很清晰,代码也很简洁,运行没有问题。但偶尔会出现服务器繁忙,无法访问的情况。

二、AI编写代码的效果

我让AI帮我用python写一个计算器程序,要求图形界面。

1、1.5B和8B模型是无法完成这个任务的,思考过程输出了一大堆编程思路,但最终给出的代码是无法运行的。

2、14B模型编写的代码不太完善,有点问题,如下图,计算器的按键排列不太合理,而且“+”号键不见了,人工调试一下是可以修复这些bug的。


3、32B模型编写的代码给我惊喜了,计算器功能完全没有问题,界面也非常漂亮(如下图),而且代码也是最简洁的。下面附上deepseek的思考过程和最终给出的代码:


PS D:\> ollama run deepseek-r1:32b
>>> 请用python写一个计算器程序,要求图形界面。
<think>
好的,我现在需要帮用户用Python写一个带有图形界面的计算器程序。首先,我得确定使用什么库来创建GUI。最常见的是Tkinter,
因为它是标准库的一部分,安装方便。

接下来,我要规划计算器的功能。基本功能包括加减乘除,还有括号运算和清除功能。可能的话,还要处理小数点和负数的显示。用
户可能还希望有一个显示屏来输入数字和显示结果。

然后是界面设计。我需要一个文本框作为显示屏,位于顶部,下面排列按钮。按钮应该分成几行,第一行放数字0-9,第二行放运算
符,第三行放清除、括号等。布局上使用grid或者pack管理器。这里可能用grid更方便,因为可以对齐按钮。

关于代码结构,我需要定义一个计算器类,初始化界面和各个组件。每个按钮点击时会调用相应的方法来更新显示内容或进行计算。
计算结果可以通过eval函数实现,但要注意错误处理,比如除以零的情况。

在编写数字输入功能时,要确保可以连续输入多个数字,并且能够处理小数点。运算符的逻辑是将当前输入的内容和运算符一起存储
起来。当用户点击等号时,执行整个表达式的计算,并显示结果。

清除按钮需要重置显示屏为空,而括号按钮则直接添加到当前表达式中。错误处理方面,如果计算过程中出现异常,比如除以零,应
该提示用户并清空输入。

最后,测试程序是否能正常工作,各个功能是否都实现正确。检查是否有UI上的问题,比如按钮布局是否合理,显示是否清晰。

总结一下,步骤是:1. 导入Tkinter库;2. 创建计算器类,初始化界面和组件;3. 实现数字输入、运算符处理、计算结果的方法;
4. 设置各个按钮的事件处理函数;5. 运行主循环。这样就能完成一个基本但功能齐全的图形计算器程序了。
</think>

以下是一个使用Python和Tkinter库编写的简单计算器程序,具有基本的加减乘除功能:

```python
import tkinter as tk

class Calculator:
    def __init__(self, master):
        self.master = master
        master.title("计算器")

        # 创建显示屏
        self.display = tk.Entry(master, width=30)
        self.display.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

        # 创建数字按钮
        buttons = [
            '7', '8', '9', '/',
            '4', '5', '6', '*',
            '1', '2', '3', '-',
            '0', '.', '=', '+'
        ]

        row = 1
        col = 0

        for button in buttons:
            tk.Button(
                master,
                text=button,
                width=7,
                command=lambda b=button: self.click(b)
            ).grid(row=row, column=col)
            col += 1
            if col > 3:
                row += 1
                col = 0

        # 创建清除按钮和括号按钮
        tk.Button(master, text='C', width=7, command=self.clear).grid(row=5, column=0)
        tk.Button(master, text='(', width=7, command=lambda: self.click('(')).grid(row=5, column=1)
        tk.Button(master, text=')', width=7, command=lambda: self.click(')')).grid(row=5, column=2)

    def click(self, button):
        if button == '=':
            try:
                result = eval(self.display.get())
                self.display.delete(0, tk.END)
                self.display.insert(tk.END, str(result))
            except:
                self.display.delete(0, tk.END)
                self.display.insert(tk.END, "错误")
        else:
            self.display.insert(tk.END, button)

    def clear(self):
        self.display.delete(0, tk.END)

root = tk.Tk()
calculator = Calculator(root)
root.mainloop()
```

这个程序包含以下功能:

1. 基本的加减乘除运算
2. 支持括号运算
3. 清除功能(C键)
4. 支持小数点输入
5. 错误处理

使用说明:
1. 运行程序后,会显示一个计算器界面
2. 点击数字和运算符按钮进行输入
3. 点击等号(=)执行计算
4. 点击C键清空当前输入
5. 使用括号可以改变运算顺序

你可以通过修改按钮的布局、颜色和其他样式属性来进一步自定义计算器的外观。

要运行这个程序,需要在安装了Python环境的计算机上打开命令行工具,切换到包含此代码文件的目录,并执行以下命令:

```bash
python 计算器.py
```

如果你还没有安装Tkinter库,可能需要先安装它。大多数Linux发行版可以通过包管理器安装Python-Tk,而Windows和MacOS通常已
经包含在标准Python安装中。

这是一个基础版本的计算器程序,你可以根据自己的需求进一步扩展功能,例如添加:
- 更复杂的数学函数
- 记忆功能
- 历史记录
- 更多种类的运算符(如平方根、百分比等)
- 支持更多格式的输入

4、70B模型编写的代码也是没问题的,只是我电脑运行速度太慢了,将近15分钟才完成。但写出来的程序界面貌似还没有32B模型写的漂亮(如下图),而且代码也没有32B的简洁。可能多运行几次效果会好点,但太慢了,就没有测试了。


PS E:\> ollama run deepseek-r1:70b
>>> 请用python写一个计算器程序,要求图形界面。
<think>
嗯,我需要帮用户写一个带有图形界面的计算器程序,用Python来实现。首先,我应该考虑使用什么库来创建GUI。Tkinter是一个不
错的选择,因为它是Python自带的,不需要额外安装,而且比较简单易学。

接下来,我得规划一下这个计算器的布局。通常,计算器会有输入显示区和一系列按钮,比如数字、运算符,还有清除和等于功能。
我可以把它们分成几个行框,每个行框放不同的按钮,这样看起来比较整齐。

然后,我要考虑变量的存储。可能需要一个字符串变量来保存当前输入的数字和操作符,这样当用户点击按钮时,可以将字符追加到
这个变量中。此外,还需要另一个变量来临时存储数值,方便进行计算。

关于按钮的功能,每个数字按钮应该直接在显示区中添加对应的数字。运算符按钮则需要记录下来,当点击等于号时执行相应的运算
。但这里可能会有问题,比如多次点击运算符或者没有输入数值就点击运算符的情况,需要处理这些异常情况。

清除功能应该能把当前显示区和临时变量都清空,这样用户可以重新开始计算。等于按钮则要执行实际的计算,但可能会遇到除以零
这样的错误,所以需要用try-except来捕捉异常,并提示用户。

在设计布局的时候,我打算使用grid布局,因为它比较直观,适合表格状的结构。显示区可以放在最上面,然后是运算符按钮,接着
是数字按钮,最后是清除和等于按钮。这样看起来比较标准,也方便用户操作。

接下来,我需要为每个按钮绑定对应的函数。比如,当点击数字7时,就执行将'7'追加到输入变量中,并更新显示区。同样地,运算
符按钮会将符号追加,同时更新临时数值,以备后续计算。

在编写代码的时候,我应该先导入tkinter模块,然后创建主窗口。接着设置好各个组件的布局和功能。注意,每次点击按钮后,都
要更新显示区的内容,这样用户可以实时看到自己的输入。

最后,测试一下程序是否能正常运行,看看有没有遗漏的情况,比如除法运算是否会出错,清除功能是否有效等等。如果有问题,就
需要回去检查代码,找出哪里出了差错,并进行修正。

总的来说,这个过程包括了选择工具、设计布局、编写逻辑函数以及测试程序。希望通过这样的思考,可以一步步完成一个简单但功
能齐全的计算器程序。
</think>

以下是使用 Python 的 Tkinter 库创建的一个简单图形界面计算器:

```python
from tkinter import *

# 创建主窗口
root = Tk()
root.title("计算器")

# 输入框
expression = StringVar()

# 表达式显示区
expression_entry = Entry(root, textvariable=expression, width=20)
expression_entry.grid(row=0, column=0, columnspan=4)

# 按钮点击函数
def button_click(item):
    expression.set(expression.get() + str(item))

# 清除函数
def clear():
    expression.set("")

# 计算结果函数
def calculate():
    try:
        result = eval(expression.get())
        expression.set(result)
    except Exception as e:
        expression.set("错误")
        print(str(e))

# 创建按钮
button_7 = Button(root, text="7", command=lambda: button_click(7))
button_8 = Button(root, text="8", command=lambda: button_click(8))
button_9 = Button(root, text="9", command=lambda: button_click(9))
button_divide = Button(root, text="/", command=lambda: button_click("/"))

button_4 = Button(root, text="4", command=lambda: button_click(4))
button_5 = Button(root, text="5", command=lambda: button_click(5))
button_6 = Button(root, text="6", command=lambda: button_click(6))
button_multiply = Button(root, text="*", command=lambda: button_click("*"))

button_1 = Button(root, text="1", command=lambda: button_click(1))
button_2 = Button(root, text="2", command=lambda: button_click(2))
button_3 = Button(root, text="3", command=lambda: button_click(3))
button_subtract = Button(root, text="-", command=lambda: button_click("-"))

button_0 = Button(root, text="0", command=lambda: button_click(0))
button_decimal = Button(root, text=",", command=lambda: button_click("."))
button_add = Button(root, text="+", command=lambda: button_click("+"))
button_equal = Button(root, text="=", command=calculate)
button_clear = Button(root, text="C", command=clear)

# 按钮布局
button_7.grid(row=1, column=0)
button_8.grid(row=1, column=1)
button_9.grid(row=1, column=2)
button_divide.grid(row=1, column=3)

button_4.grid(row=2, column=0)
button_5.grid(row=2, column=1)
button_6.grid(row=2, column=2)
button_multiply.grid(row=2, column=3)

button_1.grid(row=3, column=0)
button_2.grid(row=3, column=1)
button_3.grid(row=3, column=2)
button_subtract.grid(row=3, column=3)

button_0.grid(row=4, column=0)
button_decimal.grid(row=4, column=1)
button_add.grid(row=4, column=2)
button_equal.grid(row=4, column=3)
button_clear.grid(row=5, column=0, columnspan=4)

# 运行主程序
root.mainloop()
```

这个代码创建了一个具有基本功能的计算器,包括:
- 数字按钮 (0-9)
- 四则运算符 (+, -, *, /)
- 小数点和清除按钮
- 等号按钮进行计算

### 特性:
1. 用户可以通过点击按钮输入数字和操作符。
2. 点击 '=' 按钮时,会使用 `eval()` 函数计算当前表达式的值。
3. 如果在计算过程中出现错误(例如除以零),会显示 "错误"。
4. 'C' 按钮用于清空当前输入。

### 注意事项:
1. 该代码使用的是 `eval()` 来执行计算,虽然对于简单的计算器来说已经足够,但是在更复杂的应用中,可能需要更安全的方法
来处理表达式。
2. 界面布局是基于 Tkinter 的 grid 布局系统,可以根据需要调整按钮大小和位置。

运行这个代码后,你将看到一个功能齐全的图形界面计算器。你可以通过点击按钮进行数学运算。

5、用线上的deepseek来写代码效果也很不错,而且速度也不慢,效果如下图:


三、总结

DeepSeek写代码能力这么强,那么能代替程序员吗?我觉得暂时还不能完全替代程序员,我上面测试的这个计算器代码编写还不算是非常复杂的程序,如果遇到复杂的情况,估计Bug会很多,还是需要人工调试的。但是AI写代码能够极大的提高程序员的工作效率这是无需置疑的,另外对于非软件专业的运维人员帮助也非常大,例如可以让AI编写一下运维方面的自动化工具,有了AI之后运维工程师就算不懂编程也能定制自己的想要的运维工具了。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言