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

很多学编程的新人,一遇到问题就慌,或者是直接丢个截图到群里问怎么解决。可是你要知道,在编程的路上,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中的这几种报错你遇到过吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俊红的数据分析之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值