当前位置: 首页 > 后端技术 > Python

零基础的人应该如何学习python

时间:2023-03-25 23:21:48 Python

**在学习Python的过程中,尤其是小白的入门阶段,会遇到很多“别人家”光鲜亮丽的标签。今天我们就来看看两种常见的。**零基础的“零基础”案例比比皆是。本来,Python编程就掌握的很好。一说起零基础学习,立马引起了很多白人的关注,尤其是再加上转行、跨专业等背景。要知道别人的零基础可能根本就没有接触过Python这门语言,但是其他的编程语言都有涉及了。就算真的白手起家,也看不到他在幕后付出的努力。因此,我们必须正视“零基础”的标签。既不能说明Python好学,也不能证明谁强谁弱。至于零基础,首先明确一点,大家初学Python都是从零基础开始的。这么说是没有意义的。学好Python,不在于基础的起点,而在于知识的积累、方法的运用、习题的积累。快速入门一般跟在“零基础”后面的是“快速入门”的标签。随着近些年Python越来越流行,培训和推广Python学习的文案随处可见。零基础的起点,再加上最后快速上手达到升职加薪的效果,这不就是Python培训机构最好的广告吗?Python的简单性来自与其他编程语言的对比,而不是学习时间。一个资深的程序员上手Python可能需要几周甚至几天的时间,而一个纯粹的新手可能还要迷茫几个月甚至几年。横向比较不同层次是没有意义的。快速上手这一点可以用来垂直监督自己:能行就不要陶醉于自己,继续学习;入门难,就要下定决心,踏踏实实做下去。在对自己的基础和能力有了大致的了解后,合理规划,高效实践,提高学习质量。02结合自己实践Python的经验,给小伙伴们推荐一个学习方法:有想法的时候,搜索现成的代码消化,自己整合改造。听起来有点像吸收别人的技能为己所用,所以我自称“吸星大法”。吸星大法的每一本秘籍都有自己的前提,比如向日葵宝典中的“欲修此功,必先**”。我们的没有那么严格,但是我们必须学会有效地搜索。很多很多小白都不会搜索问题。他们宁愿花大量时间在群组和论坛中提问,也不愿直接通过搜索引擎寻找答案。这是大忌。同时,由于你真的是新手,提问的时候把握不住问题的要点,说半天别人不明白你想做什么,浪费了很多时间和活力。找到合适的参考资料后,需要结合别人的讲解去研究代码,理解后自己进行整合改造。先尝试模仿学习,消化一个大概的思路,然后主动用代码去实现。整个过程之后,我们自己搜索过滤结果,研究别人完整的代码,模仿修改整合形成自己的新代码,吸星法就这样实践了。就在前几天,有朋友问起用Python实现一个计算器。我们就用这道题来练习吸星的方法。第一个是搜索。需求其实是用Python写一个图形界面的计算器。搜索时应体现:搜索结果中前几项可能是广告,忽略即可;选择参考的帖子时,首先要根据发帖时间来选择,最近发的最好附上源码和说明。进帖后看看评论区,有没有反馈错误的地方。如果有,不要浪费时间阅读;代码简洁,解释详细,供参考。另外,在选择资源的时候要考虑到个人的需求,因为之前尝试过tkinter写图形界面,这次打算借此机会学习Qt图形界面编程,所以选择了一篇关于PyQt5的文章来实施一个计算器来学习。https://blog.csdn.net/LindaMa...文章如截图,代码贴在csdn博客上有更详细的说明,同时贴出其GitHub代码的链接。这里小白要注意了。有机会的话,学习一下如何在GitHub上查看和下载代码,并尝试将自己的代码上传到GitHub上进行分享练习。参考文章200多行代码,开头一堆import完全看不懂,特别唬人。别着急,让我们都来看看,试着去理解和吸收。首先是开头的导入区:importsysfromPyQt5.QtWidgetsimport(QMainWindow,QWidget,QApplication,QLineEdit,QPushButton,QGridLayout)fromPyQt5.QtGuiimportQRegExpValidatorfromPyQt5.QtCoreimportQt,QRegExp首先导入sys,如果你有没接触过,可以搜索介绍,sys模块包含了Python解释器及其环境相关的函数。接下来三个连续的PyQt5相关的fromimports显然是我们要用来构建图形界面的模块。不细说了,继续看代码。类计算器(QWidget):def__init__(self):defui(self):defclear_line_edit(self):defdeal_num_btn(self,sender_text):defdeal_operator_btn(self,sender_text):defdeal_point_btn(self):defdeal_equal_btn(self):defshow_msg(self):defauxiliary_calculate(self,first_num,second_num,operator:str):defcalculate(self,operator='='):下面两百行代码就可以梳理出上面的结构,其实,定义了一个类并声明了各种函数。我们也可以认为代码会实例化一个该类的计算器对象并运行,实现计算器的各种功能。最后四行代码是代码实际执行的命令:if__name__=='__main__':#所有的PyQt5应用程序都必须创建一个Application对象。sys.argv参数是来自命令行的参数列表app=QApplication(sys.argv)#cal是我们要构建的计算器,它是Calculator类的一个实例cal=Calculator()#计算器退出相关系统。exit(app.exec_())说实话,我在过基础的时候,并不知道name的用法,所以直接把要执行的代码写出来运行。这个用法主要是用来让脚本模块可以被其他模块导入,同时脚本模块也可以自己执行。即当这个py被其他模块导入时,__name__不是“__main__”,后面的代码不会执行;并且在执行py的时候,会触发条件直接运行它的代码。实际执行的代码非常复杂,乍看之下难以理解。分析搜索之后,就可以看出大概的思路了。由于我们要将PyQt5作为一个图形界面的应用程序来使用,所以我们需要根据它的格式来构建它的样式和功能。正如我们所料,Calculator类会被实例化,所以计算器的功能也在上面一长串的类定义中准备好了。#QWidget是Cal的父类classCalculator(QWidget):"""计算器基本页面的基本接口,完成基本计算"""#__init__创建实例时传入的参数,参考链接https://www.cnblogs.com/illusion1010/p/9527034.htmldef__init__(self):#super()函数是用来调用父类(superclass)的方法#参考链接https://www.runoob.com/python/python-func-super.htmlsuper(Calculator,self).__init__()#这里先定义ui()函数,下面再详细定义self.ui()self.char_stack=[]#操作符号栈self.num_stack=[]#操作数栈self.nums=[chr(i)foriinrange(48,58)]#用于判断按钮的值是否为数字chr(48)-chr(57)对应数字0-9self.operators=['+','-','*','/','x^y']#用来判断按钮的值是否为一个operatorself.empty_flag=True#这个flag的意思是判断是否计算成功r第一次启动,显示屏上没有数据self.after_operator=False#读取计算器的计算后,比如输入+后1+2,屏幕上仍然显示1,输入2后,1被替换了,这个flag的作用是这样的self.char_top=''#保持操作符号在栈顶self.num_top=0#保持值在栈顶self.res=0#保留计算结果,看计算结果计算一次后,继续按等号,重复最近的1+2的计算。得到3后按等号得到3+2,以此类推。#>先计算一下,为什么同一个符号变了计算完之后,为了方便做一个运算,#计算完一个表达式,继续按住等号,会执行最后一个符号运算self.priority_map={'++':'>','+-':'>','-+':'>','--':'>','+*':'<','+/':'<','-*':'<','-/':'<','**':'>','//':'>','*+':'>','/+':'>','*-':'>','/-':'>','*/':'>','/*':'>'}这一段对新手来说还是有些难度的,比如classCalculator(QWidget)是继承父类的形式。__init__中super()的调用是为了对计算器所需的变量和函数进行统一定义和初始赋值。随后,ui()相关代码详细定义了计算器图形界面的风格和布局,并将点击触发的事件绑定到界面中的按钮上。即当我们点击计算器数字按钮或运算符时,数字或运算符会显示在显示框中;当我们点击“=”时,会进行一系列的操作,并输出结果。代码下载按照这个顺序看一遍源码,你会对代码的整体思路和结构有一定的把握。假设我们要给它添加功能,只需要在添加按钮或者改变布局的功能上做相关修改,然后妥善处理绑定的点击事件,一个我们优化过的计算器就诞生了。