我遇到的最蠢的bug,竟然是因为这个原因……
bug的背景
- 我是一个Python开发者,我最近在做一个数据分析的项目,需要用到pandas库,来处理和分析一些表格数据
- 我的功能需求是,根据用户输入的一些条件,从一个大的数据表中筛选出符合条件的数据,并生成一个新的数据表,显示在网页上
- 我的bug是,当我运行我的代码时,我发现生成的数据表是空的,没有任何数据,但是我检查了我的输入和输出,都没有问题,我不知道问题出在哪里
bug的排查
- 我首先检查了我的代码,看看有没有语法错误或者逻辑错误,但是我没有发现任何明显的错误,我的代码看起来都很正常
- 我然后检查了我的数据源,看看有没有数据格式或者数据质量的问题,但是我也没有发现任何异常,我的数据源都是完整和有效的
- 我接着检查了我的筛选条件,看看有没有设置错误或者输入错误,但是我也没有发现任何错误,我的筛选条件都是合理和正确的
- 我最后检查了我的输出结果,看看有没有显示错误或者渲染错误,但是我也没有发现任何错误,我的输出结果都是空的,没有任何数据
- 我花了大约两个小时,用了各种工具和方法,比如打印日志、设置断点、使用调试器等,但是我都没有找到问题的原因,我感到非常困惑和沮丧
bug的发现
- 我后来是在一个偶然的机会,发现了问题的原因,竟然是因为一个非常简单和愚蠢的原因
- 我发现,我在写筛选条件的时候,用了一个错误的运算符,我用了
=,而不是==,这导致了我的筛选条件永远不会成立,所以筛选出来的数据永远是空的 - 我一看到这个错误,我就觉得非常惊讶和尴尬,我不敢相信我竟然犯了这么一个低级的错误,我觉得自己很蠢
- 我马上修改了我的代码,把
=改成了==,然后重新运行了我的代码,我发现生成的数据表终于有了数据,而且都是符合条件的数据,我感到非常高兴和欣慰
# 这是一个Python代码块,用于演示你遇到的bug
import pandas as pd # 导入pandas库# 读取数据源,假设是一个csv文件
data = pd.read_csv("data.csv")# 定义筛选条件,假设是根据年龄和性别筛选
condition = data["age"] > 18 and data["gender"] = "male" # 这里用了错误的运算符,应该是==# 根据筛选条件,生成新的数据表
new_data = data[condition]# 显示新的数据表
print(new_data)
bug的总结
- 这个bug让我深刻地体会到了编程中的一个常见的陷阱,就是运算符的误用,尤其是赋值运算符和比较运算符,它们看起来很相似,但是功能却完全不同,如果不注意,就会造成很大的麻烦
- 这个bug也让我深刻地意识到了编程中的一个重要的原则,就是代码的可读性,如果我能写出更加清晰和规范的代码,比如用括号来区分优先级,或者用有意义的变量名来表示数据,或者用注释来说明逻辑,那么我就可以更容易地发现和避免这样的错误
- 这个bug还让我深刻地学到了编程中的一个有效的技巧,就是代码的测试,如果我能在写完代码之后,进行一些简单的测试,比如用一些边界值或者特殊值来检验我的代码的正确性,或者用一些断言或者异常来验证我的代码的逻辑,那么我就可以更快地发现和修复这样的错误
相关文章:
我遇到的最蠢的bug,竟然是因为这个原因……
bug的背景 我是一个Python开发者,我最近在做一个数据分析的项目,需要用到pandas库,来处理和分析一些表格数据我的功能需求是,根据用户输入的一些条件,从一个大的数据表中筛选出符合条件的数据,并生成一个新…...
【Mysql】查询mysql的版本
目录 cmd命令查询 mysql -- help(命令) mysql -u root -p(命令) 数据库管理工具查询 select version(); cmd命令查询 mysql -- help(命令) mysql -u root -p(命令) 执行该命令并且输入数据库密码 数据库管理工具查询 selec…...
广州华锐互动:VR互动实训内容编辑器助力教育创新升级
随着科技的飞速发展,教育领域也正在经历一场深刻的变革。其中,虚拟现实(VR)技术为教学活动提供了前所未有的便利和可能性。在诸多的VR应用中,VR互动实训内容编辑器无疑是最具潜力和创新性的一种。广州华锐互动开发的这款编辑器以其独特的功能…...
2023最新版本 从零基础入门C++与QT(学习笔记) -1- C++输入与输出
🎏说在前面 🎈我预计是使用两个月的时间玩转C与QT 🎈所以这是一篇学习笔记 🎈根据学习的效率可能提前完成学习,加油!!! 输入(代码如下方代码块) 🎄分析一下构成 🎈…...
Linux:权限篇 (彻底理清权限逻辑!)
shell命令以及运行原理: Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来…...
classification_report分类报告的含义
classification_report分类报告 基础知识混淆矩阵(Confusion Matrix)TP、TN、FP、FN精度(Precision)准确率(Accuracy)召回率(Recall)F1分数(F1-score) classi…...
mysql with 的用法 (含 with recursive)
mysql with 的用法 (含 with recursive) 相关基础 AS 用法 as 在 mysql 中用来给列/表起别名 如: -- 给列起别名, 把列为name的别名命名为student_name select name as student_name from student; -- 给表起别名, 把表student的别名命名为data_list select * from student…...
YOLOv8模型ONNX格式INT8量化轻松搞定
ONNX格式模型量化 深度学习模型量化支持深度学习模型部署框架支持的一种轻量化模型与加速模型推理的一种常用手段,ONNXRUNTIME支持模型的简化、量化等脚本操作,简单易学,非常实用。 ONNX 模型量化常见的量化方法有三种:动态量化…...
揭秘南卡开放式耳机创新黑科技,核心技术剑指用户痛点
随着科技的进步和人们娱乐方式的升级,大家对听音工具的选择,从传统的耳机到蓝牙耳机再到AirPods这样的真无线耳机,而今年,也有一种全新的耳机爆发式涌入人们之中,那就是开放式耳机。 开放式耳机的出现,满足…...
ChatRule:基于知识图推理的大语言模型逻辑规则挖掘11.10
ChatRule:基于知识图推理的大语言模型逻辑规则挖掘 摘要引言相关工作初始化和问题定义方法实验 摘要 逻辑规则对于揭示关系之间的逻辑联系至关重要,这可以提高推理性能并在知识图谱(KG)上提供可解释的结果。虽然已经有许多努力&a…...
6.4翻转二叉树(LC226—送分题,前序遍历)
算法: 第一想法是用昨天的层序遍历,把每一层level用切片反转。但是这样时间复杂度很高。 其实只要在遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。 这道题目使用前序遍历和后序遍历都可以,唯独中序遍历不方便&#x…...
【斗罗二】霍雨浩拿下满分碾压戴华斌,动用家族力量,海神阁会议
Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 深度爆料《绝世唐门》第23话最新预告分析,魂兽升学考试中一场白虎魂师戴华斌与千年级别的风虎的决斗即将上演。风虎,作为虎类魂兽的王者,其强大的实力和独特的技能让这场战…...
通义千问, 文心一言, ChatGLM, GPT-4, Llama2, DevOps 能力评测
引言 “克隆 dev 环境到 test 环境,等所有服务运行正常之后,把访问地址告诉我”,“检查所有项目,告诉我有哪些服务不正常,给出异常原因和修复建议”,在过去的工程师生涯中,也曾幻想过能够通过这…...
一键创建PDF文档,高效管理您的文件资料
在繁忙的工作中,您是否曾为处理PDF文件而感到烦恼?现在,我们为您推荐一款全新的高效PDF文档管理工具——一键创建PDF文档,让您的工作效率瞬间提升! 首先,在首助编辑高手的主页面板块栏里,选择“…...
React在 JSX 中进行条件渲染和循环,并使用条件语句和数组的方法(如 map)来动态生成组件或元素
在 JSX 中进行条件渲染和循环,你可以使用条件语句(如 if-else)和数组的方法(如 map)来动态生成组件或元素。以下是一些示例来说明这些概念: 条件渲染: import React from react;const MyCompo…...
数据结构-二叉树的遍历及相关应用
1、定义二叉树结点结构 2、编写主程序 3、三种方法遍历二叉树,并实现求树的深度,叶子数,某一层的结点数 4、实现代码(带交互界面) #include<iostream> using namespace std; typedef struct BiTNode {char d…...
机器人入门(五)—— 仿真环境中操作TurtleBot
仿真环境中操作TurtleBot 一、实操1.1 查看姿态信息1.2 控制turtlebot移动的三种方式1.2.1 命令行发布指令1.2.2 键盘操控1.2.3 Python脚本控制1.2.4 使用rqt工具界面,发布运动指令 二、里程计(odometry)TurtleBot3 仿真 进行实操之前,先准备环境 $ sud…...
G2406C是一款高效的直流-直流降压开关稳压器,能够提供高达1A输出电流。
G2406C 1.5MHz,1A高效降压DC-DC转换器 概述: G2406C是一款高效的直流-直流降压开关稳压器,能够提供高达1A输出电流。G2406C在2.7V至5.5V的宽范围输入电压下工作,使IC是低压电源转换的理想选择。在1.5MHz的固定频率下运行允许使用具有小电感…...
HTB——常见端口及协议总结
文章目录 一、 常见端口二、HTTP协议三、FTP四、SMB 一、 常见端口 http协议:80、8000https协议:443、8443ftp协议:20(数据传输)、21(发送命令)smb协议:445 二、HTTP协议 https的…...
Spring Boot中处理简单的事务
说到事务,我们第一影响应该是数据库管理系统的一个重要概念。 事务(Transaction)是数据库管理系统(DBMS)中的一个概念,用于管理对数据库的一组操作,这些操作要么全部成功执行,要么全…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
