之前我写过两篇关于测试人员要不要学编程的文章,有很多朋友留言给我说,我也很想学呀,可是我办不到呀。

前两篇文章链接如下,没看过的可以尽快回顾下:

《做软件测试到底要不要学编程?》

《技术导向下的业务测试何去何从?》

我理解办不到的原因,因为我全部都亲身感受过,现在我把最突出的几个困境汇总了一下,我们来分别聊一聊。

困境一:一学就会,一写就懵。

学过 Python 的同学,肯定都学习过列表、元组,如果是通过菜鸟教程学习的话,肯定都学习过列表和元组的访问、修改和删除操作。

不知道有多少人还记得第一次看这部分内容的感觉,反正我的感觉是「很简单嘛,和想象中差不多」,那几个操作已经很熟悉了。

有一次我在处理一个字符串拼接,我是用的元组,然后我 append 半天,总是报错,我记得很清楚呀,我学习的时候明明是有这个方法的呀,为毛就是不行呢?

等我回去仔细一看,嘿,append 竟然是列表的方法,这知识点简单么?忒简单了,可以信手拈来么?不行。

举例这个已经是最简单的部分了,类似的我还在多个元素拼接上吭哧过半天,才发现元组必须和元组类型进行拼接,不然也是报错。

如果需要两个元组拼接后不是合成一个元组,而是形成一个新的复合型元组,那就更要纠结一会了。

看完我上面说的是不是觉得很简单,请动手写一写,或者回忆下自己当初是怎么解决这些问题的。

古人云「看书如流水,编码如便秘」,甚是。

建议解决方案:多动手实操练习,真的能熟能生巧噢。

困境二:原样照抄我会,稍加变通就懵逼。

我之前很多的脚本都是 python2.6 写的,因为 py2 已经不更新了,所以我正尝试逐步改为 py3。

有一次我拿一个简单的脚本试试效果,脚本功能很简单,就是把一个 PE 文件内容使用文本方式读取出来,然后暴力搜索其中是否存在某指定字符串,并得出搜索结果。

py2 读取文件内容的写法是:

def test_readfile2(filepath):

"""读取文件内容

Args:

filepath:目标文件全路径

Returns:

context:读取到的文件内容

"""

with open(filepath, 'r') as obj:

context = obj.read()

return context

同样的写法,在 py3 中执行会报错:

UnicodeDecodeError: 'gbk' codec can't decode byte 0x90 in position 2: illegal multibyte sequence

根据之前弱弱的经验,一看也知道是编码的问题,但是我反复的 encode 或者 decode,都是无济于事。

明明知道是很简单的问题,但就是搞不定,那种无奈,实在是很无奈。

一次偶然的机会,终于知道了解法,方法果然很简单:

def test_readfile3(filepath):

"""读取文件内容

Args:

filepath:目标文件全路径

Returns:

context:读取到的文件内容

"""

with open(filepath, 'r', errors='ignore') as obj:

context = obj.read()

return context

仅仅是加了一个参数 errors,一切都搞定了,是不是有种豁然开朗的感觉。

建议解决方案:只有自己亲自踩过的坑才是真的坑,一定要多动手实操练习,了解每一种变通的可能。

困境三:基本用法会,稍微进阶就懵逼。

用 Python 写 GUI 的同学,应该有部分是使用的 wxPython 这个库,反正我是用的这个。

如果只是写个主界面,大家都会定义一个主窗口类,比如 MainClass 之类的,其他控件也可以按教程一步步操作实现。

有次我需要在主界面之外加一个设置窗口,同时设置项更新后,主界面要立刻响应。

这个响应函数我是写到主窗口的类里面的,搞了半天,我就是不知道怎么在子窗口类中调用父窗口类里面的方法,网上也搜了很久,就是没找到有类似的问题以及解决方案。

明明知道是很简单的问题,但就是搞不定,那种无奈,实在是很无奈。

后来仔细看了网上的一些实现的例子,发现可以在父窗口类中把 self 作为参数传递给子窗口,子窗口再通过这个 self 来进行父窗口类中方法的调用,完美解决。

同样的回过头看看解决方法,真的是很简单,而且也确实给人豁然开朗的感觉,但这又明明就是一个稍微进阶了一下的基本用法而已。

不动手时不知道自己有多弱,上手后才追悔莫及。

建议解决方案:多动手实操练习,每一个遇到的问题,都是自我进阶的阶梯。

以上,我通过三个简单的例子,说明了自己在学习 Python 编程中碰到的问题,如果是初阶的同学,应该会感同身受,欢迎也留言说说你曾经碰到的那些坑,如果是高阶的同学,可以留言说下自己的学习经验,让我们也学习下。

当然,如果你认可我的观点,请帮忙转发 + 点个「赞」让更多人看到,谢谢。

python困境_学习 Python 编程的三种困境相关推荐

  1. java范式_【java编程】三种非主流的编程范式?

    原标题:[java编程]三种非主流的编程范式? [Java培训]:的小编在一些平台上看到的高端的编程技巧,今天给大家介绍相应的三种编程范式,在编程中就提到了提到了不少小众语言,在这里小编希望借此让大家 ...

  2. 小白的第一本python书_学习《编程小白的第一本python入门书》

    ---恢复内容开始--- open打开一个txt文件,如果不存在则创建 1 file=open('/Users/Administrator/Desktop/file.txt','w')2 file.w ...

  3. python作品_学习 Python 有些枯燥?那是你学错方法了,看这里

    有没有觉得学习Python有些无聊乏味?觉得Python很没意思?如果是的话,那是你没找到好的学习方法! Python编程中的Turtle(海龟绘图).Pygame非常利于初学者的学习,你可以使用它们 ...

  4. python忠告_学习Python一段时间,老司机给上路新手的3点忠告!

    在你学习编程的过程中,是否有过以下经历,或正在面临类似的局面:网上找了很多资料,不知道从哪里看起 买了本书,过了很久也没有看完第一章 开始还能跟着写几行代码,后来突然就看不懂了 也看了些教程和视频,似 ...

  5. macbookpro可以自学python吗_学习python,office等,是否推荐购买macbookpro?

    其实你写下这个问题的时候你心里已经有答案了吧 先说结论 荷包够大 上mac 不然就上windows 对于初学者来说 入门你用哪个平台都可以 先来看一下macbookpro 能给你带来什么 首先对于py ...

  6. python最佳编程_学习 Python 的最佳方式

    原标题:学习 Python 的最佳方式 Python 是世界上功能最多且最强大的编程语言之一.使用 Python,你可以编写自己的应用程序,创建游戏.设计算法.甚至编程一个机器人.学习 Python ...

  7. 学python必须得英语精通吗_“学习python必须精通的几个模块“

    python中都有哪些模块呢 这就多了你,文档有每个模块介绍: https://docs.python.org/2/library/index.html 如果了您的问题请采纳! 如果未解继续追问 如何 ...

  8. 为什么学习Python?选择学习Python的10个理由

    前言 为什么学习Python?选择学习Python的10个理由 Python提供了许多有用的功能特性,这些功能使其相比其他编程语言更流行也更易于学习.它支持面向对象的编程,也支持面向过程编程:我们在下 ...

  9. 复旦大学python培训_复旦大学Python之子高质量解读:Python400集视频教程+python电子书大合集...

    Python 简介: Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具 ...

最新文章

  1. 17.Java5的Exchanger同步工具
  2. 为了成长,我所做的一些努力!
  3. Kubernetes — Project Layout 与 cmd 入口设计
  4. 200余行代码,让你实时从视频中隐身
  5. 二分查找算法及其变种
  6. 《必然》九、享受重混盛宴,是每个人的机会
  7. 电商标识检测的鲁棒性防御,ACM MM2021 安全AI大赛技术解析
  8. Java中使用JNA实现全局监听Linux键盘事件
  9. Thinkphp3.2 中使用find_in_set
  10. 最佳展示场景kit:顶部视角的展示场景(Mockups)
  11. 经典卷积神经网络的学习(三)—— Inception Net
  12. CodeForces 489B (贪心 或 最大匹配) BerSU Ball
  13. 量子纠缠可能是真实存在
  14. IOS 腾讯微博开放平台 SDK 初体验
  15. 学历学籍管理系统-MVC和工厂模式实现学籍查询与录入
  16. CC2640R2FRSMR低功耗M3内核蓝牙MCU
  17. DINO:2022.3_SOTA_COCO_DETR
  18. geforce rtx3090显卡安装cuda11.0
  19. git把一个分支的commit merge到另外一个分支
  20. 远程访问双层嵌套Openstack云下的Windows虚机(by quqi99)

热门文章

  1. HDU2073 无限的路【数学】
  2. UVA10324 Zeros and Ones【水题】
  3. HDU1559 最大子矩阵【DP】
  4. Vijos P1772 巧妙填数【进制+置换】
  5. 编码格式(UTF-8 与 ANSI)各种编码解码(encode、decode)
  6. C++ 中的友元(friend)
  7. 元素之和最接近 0 的区间(部分和)
  8. #ifdef 的使用
  9. 三角数数列与杨辉三角
  10. Bootstrap 警告