引言
本人照明行业中年测试工程师,为了追赶新科技浪潮,开始学习物联网相关软硬件技术,学习时遇到很多难题难以继续,困境中在唯库找到朱丹老师自学力训练营,在老师自学方法的指导下构建起了知识框架打开了自学地图,让自己的物联网自学每天都有收获和进步,不断深入下去。之所以写技术博客的首要原因是依据自学力方法进行输出巩固学到的技术知识;其次是请各位大神给予批评指正,欢迎拍砖;三是展现自学过程中遇到问题时的解决过程,希望有同样学习需求的学习者能从文中得到一些启发。本人写的第一篇博客是在自学力正式营时写的用postman进行接口测试,结果由于输出意识不强,在草稿箱里躺尸到现在,进行自学力复训时,我的自学已经进行到python的编程学习,所以决定跌倒的就继续躺着,把手里正在学的先输出起来,所以就有了这第一篇菜鸟级的python自学博客。
我的软件测试自学地图
物联网涉及的知识众多,作为一个从业多年照明测试工程师,比较欠缺的是计算机软件方面的知识,这也是我带入自学力训练营的课题“半年完成嵌入式软件测试学习”,先放一下我在训练营结束时构建的自学地图:
可以发现我当时还没有学习python的计划,作为一个计算机互联网行业外行我其实当时还是很茫然的,在学习了基本的postman和ADB命令后,才发现了python的重要性于是开始自学。
我的python自学资源
从看第一个python学习视频的时间2020-9-27开始,我已经学些了整整三月,在学习之初我根据自学力学习方法在B站、腾讯课堂上找了不少的所谓所谓0基础入门python的学习视频,后来也了解到这些学习视频也是培训机构为了宣传自己的课程才免费放上去的,除了视频课程我也找了一些文字资源,包括下载《python核心编程》电子版,收藏了“菜鸟编程”网站的python3学习课程。之所以视频和文字资料都要找是为了不同的学习场景下使用,视频是在走路、等车的时候去听的,文字资料是在坐车、工作的休息时间去看的。
我的python编程实操
我在看完第一个python零基础学习视频后就安装了pycharm编译器进行编程训练,运行了每一个入门编程者都会开始写的“Hello, world",但此时我还没有找到可以持续训练编程的方法。直到我花了近一周时间大致琢磨懂了什么是面向对象的编程后,想到一个适合我这个菜鸟的可以不会花太多下班时间又能每天进行编程练习的好方法,就是把“菜鸟编程”网上python3的100个编程实例重新写成面向对象的方式进行输出运行,看结果是否正确,例如:
“Hello world"的代码本来是一句简单的命令就可以搞定的
# 输出 Hello World!
print('Hello World!')
我把它用面向对象的类的方式去改写就成了
#hello world
class Person:
def __init__(self, name, face):
self.name = name
self.face = face
def greet(self):
return ("hello, world")
one = Person('Jack','smile')
two = Person('Tom','excited')
print(one.name,one.face,one.greet())
print(two.name,two.face,two.greet())
one.greet()
输出就成了
Jack smile hello, world
Tom excited hello, world
'hello, world'
这样的改写对一个正式的程序员来说没什么意思,但对我这种菜鸟来说却是一种真正的敲代码训练,避免“一看都会,一敲就废”的学习结果。
我在python实操中犯的错误总结
菜鸟实操中犯的错误能有多低级!估计可以让一个真正的程序员笑掉大牙,但就这样的错误能让我两三天找不出来,当然指的是下班后的时间大概是晚上10:00到12:30这个时间段,连续两三天在这个时间段找错误,愣是找不出来,所以一开始计划是每天写一小段,每周末来一个大的练习,结果是一周只能完成两小段代码的练习。
错误1 class中的c大写
这个错误是我在改写“Hello, world"是发生的,我写的是:
Class Person:
当时系统输出错误提示:
File "<ipython-input-1-5c62fd31746e>", line 2
Class Person:
^
SyntaxError: invalid syntax
错误2 类的方法中缺少self 参数
这是我在改写加法的时候犯的错误:
#通用加法
class Total:
def __init__(self, total, num1, num2):
self.total = total
self.num1 = num1
self.num2 = num2
def add():
return(self.num1+self.num2)
totalone=Total("sum=",4,6)
print(totalone.total,totalone.add())
add()的括弧中缺少了self,正确的写法是add(self),结果系统的反馈是:
#通用加法
TypeError Traceback (most recent call last)
<ipython-input-2-9a7aea0c582a> in <module>
9 totalone=Total("sum=",4,6)
10
---> 11 print(totalone.total,totalone.add())
12
13
TypeError: add() takes 0 positional arguments but 1 was given
错误3 if else的分支后不加冒号
这是我在改写面积算法的时候犯的错误,我写的错误代码是
#通用面积算法
class Area:
def __init__(self,profile):
self.profile=profile
def cal(self):
A="square"
B="round"
if self.profile==A
up=3
down=4
print(up*down)
elif self.profile==B
r=6
print(3.14*r*r)
else:
print("meiyou")
one=Area("round")
one.cal()
正确的是在if self.profile==A应该写成
if self.profile==A:
elif self.profile==B应该写成
elif self.profile==B:
当时系统给我的错误代码反馈是:
File "<ipython-input-3-73e9ae525ed3>", line 9
if self.profile==A
^
SyntaxError: invalid syntax
错误4 int(input())函数内外反写
这是我在改写判断奇数、偶数的时候犯的错误,代码如下:
# 判断奇数偶数
class EvenOdd:
def __init__(self,nums):
self.nums=nums
def cri(self):
if self.nums % 2==0:
print("是偶数")
else:
print("是奇数")
a=input(int())
one=EvenOdd(a)
one.cri()
代码中的a=input(int())应该写成:
a=int(input())
系统给我错误代码反馈是:
09
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-4fa317edcc7b> in <module>
10 a=input(int())
11 one=EvenOdd(a)
---> 12 one.cri()
13
<ipython-input-4-4fa317edcc7b> in cri(self)
4 self.nums=nums
5 def cri(self):
----> 6 if self.nums % 2==0:
7 print("是偶数")
8 else:
TypeError: not all arguments converted during string formatting
我输入一个“9”后敲回车,系统就报了如上错误。
总结
之所以花时间记下所犯的错误,首先是想要把这些错误磨成我今后python学习进步的垫脚石,以后编程再遇到类似的地方就会运用更加正确,同时也是想告诉和我一样的自学者不要怕犯错误,不要怕犯低级错误而不去练习,在朋友圈看到过前同事在某地拍到的新时代标语“世上无难事,只要不要脸。”