很多学编程的新人,一遇到问题就慌,或者是直接丢个截图到群里问怎么解决。可是你要知道,在编程的路上,bug是会一直存在的,而且是不重样的,不可能每个问题都去求助别人,自己学会解决问题才是刚需。

今天介绍一种找bug的方法,分段执行。这个概念不知道多会进入到我脑海中的,可能是有这么一种专门的叫法。特地去网上查了查,好像并没有,只查到了某地方警察办案在通过推行分段执行来提高效率。

那什么是分段执行呢?就是字面意思,把整体代码分成几段去执行。你应该有过这样的体验,好不容易写了一段特别特别长的代码,或者是收到别人发来一段特别长的代码时,自己一运行就报错。看着那大红色的报错信息陷入了迷茫。代码又这么长,我该如何下手去检查哪里出问题了呢?

这个时候有一个有效的办法就是分段执行。把那段长长的代码中几个关键的部分分开来执行,看哪一段会报错,这样就可以更加精准的定位问题,从而可以快速的解决问题。

比如下面这段Python代码:

int(str(df[df["city_id"] == 1]["Stime"][0])[11:13])

这段代码难吗?好像只有一行,看起来不是特别难。那这段代码简单吗?里面各种嵌套,好像也不是那么容易。我们把这段代码可以拆成以下几部分:

df[df["city_id"] == 1]

运行上面的代码,会把df表中city_id等于1的全部数据取出来。

df[df["city_id"] == 1]["Stime"]

运行上面的代码,会把上面取出来city_id等于1的数据里面的Stime列取出来,结果示例如下:

0       2017-04-05 18:30:39
1       2017-04-05 18:34:00
2       2017-04-05 18:36:51
3       2017-04-05 18:44:24
4       2017-04-05 18:46:38
5       2017-04-05 18:49:50
6       2017-04-05 19:05:26
7       2017-04-05 19:14:13
8       2017-04-05 19:28:36
9       2017-04-05 19:32:46
……

df[df["city_id"] == 1]["Stime"][0]

再运行上面的代码会把Stime列中的第一个值取出来

str(df[df["city_id"] == 1]["Stime"][0])

再运行上面的代码,会把Stime列中的第一个值从时间类型转换为字符串类型

str(df[df["city_id"] == 1]["Stime"][0])[11:13]

再运行上面的这段代码,会把字符串第11:13位置的字符获取出来

int(str(df[df["city_id"] == 1]["Stime"][0])[11:13])

再运行上面的代码,会把取出来的字符串转化为整型。

如果你运行最开始那完整的一整行代码有问题时,你就可以把这一整段代码分成若干个过程去运行,然后看哪个分段有问题,解决完分段执行问题以后,合并到一起就可以完美运行了。

代码如人生哈,当一整段代码出现报错以后我们会去分段执行,看问题出在哪一部分。我们每个人可能都会那么一段不爽的时间,当遇到不爽的时候,我们经常会去回顾过去经历的几个关键节点,看在那些关键节点做了什么,当初做的那些选择和现在有什么关系。

掌握了分段执行,让你能够看到一长段代码报错以外不再慌张,也不需要再去求助别人,自己也可以游刃有余的解决问题。

你还可以看:

Python中的这几种报错你遇到过吗?

掌握了这个方法,以后遇到bug不用再求人了!相关推荐

  1. IE下jquery的fadeIn与fadeOut方法失效的BUG

    2019独角兽企业重金招聘Python工程师标准>>> BUG1:绝对定位嵌套绝对定位 这个问题遇到过好多次,因为没有做笔记,所以每次遇到这个问题都要研究半天.好记性不如烂笔头,这话 ...

  2. Javascript笔记:(实践篇)从jQuery插件技术说起-分析extend方法的源码(发现extend方法里有bug)(下篇)...

    1.1     分析$.extend源码 在分析源码之前,我还要加一段s测试代码,代码如下: <script type="text/javascript"> $(doc ...

  3. 高考数学考用计算机求函数吗,高考数学52种快速做题方法整理!再也不用担心考试时间不够了...

    原标题:高考数学52种快速做题方法整理!再也不用担心考试时间不够了 1 . 适用条件 [直线过焦点],必有ecosA=(x-1)/(x+1),其中A为直线与焦点所在轴夹角,是锐角.x为分离比,必须大于 ...

  4. Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法)

    Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法) 目录 Unity Android 之 应用打开手机的指定网 ...

  5. python爬虫——从此不用再愁找不到小说txt文件

    python爬虫--从此不用再愁找不到小说txt文件 最近在学习python,学了个大概就开始写爬虫了,之前做了个糗百的简单爬虫,然后底下还做了一些学校教务系统的爬虫,爬取了自己的成绩,看着挂科的大英 ...

  6. python炒股教程视频_【邢不行|量化小讲堂系列23-Python量化入门】不用再自己写技术指标了 | TA-lib视频教程...

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]: 个人微 ...

  7. 【邢不行|量化小讲堂系列23-Python量化入门】不用再自己写技术指标了 | TA-lib视频教程

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  8. 手机密码锁机的朋友不用再去营业厅解锁.自己搞定(未测试)

    (注意:本文为网上收集,仅仅为个人收藏,如果强行使用造成严重后果本人不负任何责任! 强烈建议:锁了机还是拿到营业厅解锁) 手机密码锁机的朋友不用再去营业厅解锁.自己搞定 解话机锁:*2767*2878 ...

  9. 电脑出现qtwebengineprocess.exe停止报警_FANUC报警号,不用再翻书本了。

    FANUC 0MD系统报警说明,觉得有用就收藏吧,不用再翻书本啦 1.程序报警(P/S报警)报警号 报警内容 000修改后须断电才能生效的参数,参数修改完毕后应该断电. 001TH报警,外设输入的程序 ...

最新文章

  1. 值得分享!最新发现了10个冷门好用软件,一眼就会爱上
  2. RabbitMQ 的引言
  3. PHP文件打开读取操作
  4. ef mysql modelfirst_Entity Framework(EF的Model First方法)
  5. 简单可行性报告模板_项目可行性报告模板分享!第三章主要内容
  6. C#使用Dotfuscator混淆代码以及加密
  7. WWW超文本源码浏览器
  8. java字符串去掉一头一尾_快学Scala第13章----集合
  9. MATLAB修改代码字体
  10. matlab 使用textscan读取带文本的csv文件
  11. 严格模式 Strict Mode,与ES2020同步
  12. 北京内推 | 秘塔科技招聘NLP算法工程师(社招校招可转正实习)
  13. Android Studio插入图片
  14. 被互联网租房套路割韭菜的年轻人
  15. 基于java的网上银行业务
  16. 【附源码】Java计算机毕业设计架构的博客平台设计(程序+LW+部署)
  17. preg_replace与远程代码执行
  18. 如何找出知乎的所有神回复
  19. Image through Atmospheric Turbulence笔记(一)
  20. 删除薛定谔安装文件夹后导致无法卸载或重新安装解决方案(附正常卸载方法)

热门文章

  1. 跟踪源码运行流程---SpringMVC学习笔记(四)
  2. 命令提示符中的几个重要的命令
  3. MySQL查看数据库相关信息
  4. 【8-20】java学习笔记02
  5. JS 内置对象DATE的方法
  6. Wang Xifeng's Little Plot (poj 5024 DFS)
  7. 使用smokeping监测网络
  8. CentOS允许某一端口接受外部链接
  9. Steps to install Domino Server 8.5.1 on AIX 6
  10. Java 内建函数式接口