当前位置:首页>python>学Python5️⃣0️⃣ 实战VibeCoding+人工debug

学Python5️⃣0️⃣ 实战VibeCoding+人工debug

  • 2026-09-08 19:14:37
学Python5️⃣0️⃣ 实战VibeCoding+人工debug
学Python5️⃣0️⃣ 实战VibeCoding+人工debug
作者:小号🎺
学Python,不仅要学Python的关键字定义,还要多实战。
本期就介绍一个小号最近上手的实战项目。
尽管现在有了人工智能(AI),有了Vibe Coding(氛围编程),但中国有句俗话:凡事要知其然,还要知其所以然。
小号最近这个实战项目,是关于图(graph)的理解、计算和可视化。
代码不长,50多行。代码的目的是显示图(有向图)和行列式之间的关系。
为便于介绍,下面先上实操截图和完整代码。
代码不长,但截图窗口尺寸有限,为方便介绍,将完整代码粘贴如下。
import numpy as npimport networkx as nximport matplotlib.pyplot as plt# 1. 定义目标 3阶矩阵 (邻接矩阵)# 行/列索引对应节点 0, 1, 2 (为了编程方便,通常从0开始,对应之前的1,2,3)A = np.array([    [0.5, 1.0, 0.0],    [0.2, 0.0, 0.8],    [0.0, 1.8, 0.0]])# 2. 创建有向图对象G = nx.DiGraph()# 3. 从矩阵构建图n = A.shapenodes = list(range(n[0]))G.add_nodes_from(nodes)# 遍历矩阵,添加带权重的边for i in range(n[0]):    for j in range(n[0]):        weight = A[i][j]        if weight > 0:  # 只添加非零权重的边            G.add_edge(i, j, weight=weight)# 4. 设置布局 (Spring layout 能自动优化节点位置,避免重叠)pos = nx.spring_layout(G, seed=42, k=2) # k值调整节点间距# 5. 绘制图形plt.figure(figsize=(10, 8))# 绘制节点nx.draw_networkx_nodes(G, pos, node_size=1500, node_color='lightblue', edgecolors='black')# 绘制节点标签 (这里用 1, 2, 3 对应之前的习惯,实际代码中是 0, 1, 2)labels = {0: "Node 1", 1: "Node 2", 2: "Node 3"}nx.draw_networkx_labels(G, pos, labels=labels, font_size=12, font_weight='bold')# 绘制边 (带箭头)nx.draw_networkx_edges(G, pos, arrowstyle='-|>', arrowsize=20, edge_color='gray', width=2)# 获取边的权重并绘制权重标签edge_labels = nx.get_edge_attributes(G, 'weight')# 格式化权重显示,保留一位小数formatted_labels = {k: f"{v:.1f}" for k, v in edge_labels.items()}nx.draw_networkx_edge_labels(G, pos, edge_labels=formatted_labels, font_color='red', font_size=10)plt.title("Visualization of 3x3 Adjacency Matrix as a Directed Graph")plt.axis('off') # 关闭坐标轴plt.show()
下面,依时间顺序再详细介绍一下。
小号感觉线性代数和图比较费解,但借助Python以可视化的方式来来理解“图”(graph)和行列式两者之间的关系,则事半而功倍。
于是,小号在AI中分别/先后打入“图 graph”、“图和线性代数的关系”两个Prompt,问寻AI。AI欣然作答。
现在的AI,都习惯性的在一段对话的最后,再附带一句“我还可以…,需要吗?”之类的友好问句,就这样,你只需简单的回答:“好的”、“行。请继续”,AI就提供一段简单的Python代码,就这样小号得到了上面的“SimpleGraph-1.py”代码(文件名是小号自己取的)。
但是,AI提供的源代码中,还是有几个小错误。(3个同类型的错误,实际可以只算一个。)
注意代码中第18行、22行、23行中的棕黄色标注区域中 n 变量。
同时注意完整代码中此3处错误已经被更正。正确写法应该是 n[0] 。
下面讲讲小号更改错误(debug)的过程。
一般而言,在代码调试中遇到错误,可以按下列步骤逐项尝试
① 先尝试自己独立分析一下。
② 提交错误信息给AI(指给出该代码的AI)
③ 将该份代码及相关的背景信息提交给另一个AI,并要求检查其中的错误。
④ 其他方法
以上4步(或4个方面),是小号在所谓Vibe Coding(AI辅助编程,也叫氛围编程)中经常遇到的。这次很幸运,只是在第①步稍微尝试了几次就成功排除了错误。
在第①步中,小号分别尝试了:
①.❶ 将 n 改成 int(n) ,没成功。
①.❷ 注意到错误信息中是因为有一个 tuple(元组),导致了错误。故尝试在该tuple中利用方括号下标只提取其中一项,即 n[0] ,错误信息消失。代码顺利运行,且最后绘图结果顺利呈现,符合预期。
①.❸ 如果①.❷ 不成功,可以先将原代码中从第18行以后暂时“注释掉”(用“三引号”mark起来)。然后在17行后增加调试输出 print(n) ,看看 n 究竟是什么东东。然后看情况再说…
现在,代码已经跑通,回头看,仍有许多可以总结的地方。但限于篇幅,这次就先打住。也欢迎大家到评论区留言,大家一起交流,进步。

备注:
① 小号这次用的AI不是DeepSeek,也不是豆包,也不是千问。
② 代码中引用(import) matplotlib 绘图工具库时,如果想显示中文,建议在代码一开始部分(import 语句后面)添加如下设置:
# 中文字体设置 - 放在所有绘图代码之前plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'SimSun']plt.rcParams['axes.unicode_minus'] = False

#Python#大白话#小号#大白小号学Python#原创#实战#分享
#VibeCoding#VibeCoding#Debug

最新文章

随机文章