自学Python发现很难,入门方法到底是什么?「干货放送」

组合蝉翼
• 阅读 973

首先我想说的是,对于想学好的编程的人来说,无论从哪一门语言开始入手,语言的本身其实并不是我们最应该的关心的,至少不是作为一个初学者首先关心的。

也可以说开始让你觉得困难的地方不一定是语言的本身(如语法syntax等),而是整个编程的思想和编程的结构。事实上你所学习的python语言的语法和操作方面,比起c/c++和java等语言来说呢,算是对于初学编程的人来说相对比较简单的入门的了。

01

理解什么是编程

在学习编程之前,你得理解什么是编程,为什么我们需要编程?

了解好了我们要学习的对象我们才能知道从哪个方面下手把它学好。至于我自己的理解呢,狭义上编程其实就是对于不同语言写出不同的代码(什么是编程?),而编程的目的就是通过编程语言来和计算机交流并且操控它为我们工作,实现我们需要的东西(算法algorithm等)(为什么我们需要编程?)。

然而具体根据我们需要实现什么来选择编程语言,比如对于安卓来说,就是java,xml等,对于ios来说,就是object c之类的。因此正如我之前所描述的那样,编程语言是为我们与计算机交流所服务的,就像我们学习世界上某个国家的语言是为了与某个国家的人交流,而不是为了学某种语言而学习某种语言的,语言不是我们学习编程的最终目的,恰恰是开始!

02

如何学好编程

在了解了我们为什么要需要编程以后呢,我们再来讨论下该如何把它学好。

其实编程的入门呢,应该是一个学习编程思想,深入理解什么是编程的一个过程。

而至于选择什么语言呢最开始其实并不是那么重要,甚至可以运用伪代码来学习,但是为了方便初学者学习,能实际实现的语言更加能够让初学者理解编程。

这也就是说为什么大多数学校(至少是大多数美国computer science(计算机科学)本科)的第一门课叫做intro to computer science with XXX language(用XXX语言实现的计算机科学入门)。

再次不厌其烦的声明,这里的with也是说明了后面的xxx语言是为了辅助我们学习计算机科学入门的工具,计算机科学入门才是我们的重点,而不是叫XXX语言课。

这里也不得不吐槽,一些国内的计算机培训机构为了能迅速培养程序员而专门鼓吹某某语言强,而只专注于培养学生编程语言学习的本身。这样培养出来的只能是仿照他人的程序调用者,而不是自己曾经希望的计算机科学工作者。

03

编程入门干货

好了,说了这么多大话,下面来一些干货,让你对计算机科学入门能够快一点。

计算机科学入门的第一课除了我之前说的那些为什么要学编程,什么是编程的一些理论话以外,第一个实际的东西就是所有程序员都知道的Hello World(至少对于大多数情况下来说)。

python中就是:

"print "Hello, World!"

java就是:


public class ClassName {

public static void main(String [] args) {

System.out.print("Hello, World!");

}

}

c++ 就是: 

#include<iostream>

int main{

std::cout << "Hello, World!";

return 0;

}

这三个呢其实表示的都是同一个意思,就是通过系统输出string(一串字符串)

有输出就有输入,比如input() (python), cin(c++)等。输入与输出是几乎每一个编程语言都具备的,也是人与计算机交流最基础的手段之一。

然后一般就会开始介绍数据类型(data type),比如int,double,long,boolean等(在python中相对简单,因为在定义变量(variable)的时候系统能够自动识别对变量的初始化值或者赋值值的数据类型)。

这里要强调虽然数据类型看起来很简单,但是我们知道无论人与人交流还是人与计算机交流,信息的交换是最基础的目的,而在计算机科学中信息的交换基于数据的交换,所以数据对于计算机科学十分重要。而随着今后的学习,要逐渐掌握并熟练运用各数据类型,明确什么时候运用什么数据类型等。甚至今后还会学到抽象数据类型(abstract data type)。

紧接着就是学习一些判断语句(if/else语句,switch语句等)和循环语句(while循环, for循环, do while循环等),这里面呢涉及一个十分重要的数据类型(boolean布尔值),简单地就是对和错(true和false)。虽然boolean的基本概念很好理解,但是boolean是布尔代数的基础。

基础的布尔代数在离散数学中有所涉及,所以这里强调一点,对于计算机科学学生或者想学好计算机来说,数学十分重要,尤其是离散数学。

不像很多大学对数学的淡漠态度,相反他们应该重视数学思想在计算机学习中的培养。离散数学是计算机科学的基础,微积分线性代数等是离散数学的基础,所以大学中所安排的数学课程不应该受到学生和老师的忽视。在今后无论是数据结构还是算法的学习中,数学的基础都能很好的帮助你学习好计算机科学。

随后就是学习函数(function)的概念。函数本质上就是将我们与计算机交流和操作的过程抽象形成方便我们多次使用的一种方法,所以函数在编程中也叫方法(method)。可以使我们在做相同类型的操作的时候,能够有一个类似的方法来解决,而不是每次都重复输入大量的类似内容。

在计算机科学中,化繁为简是一个很好的习惯,而函数正是帮助我们简化程序的一个基础。函数通常由返回类型或者函数的数据类型(我们希望通过函数获得的),参数(我们给予函数所需的),和函数的主体(函数是如何运作的)。

函数也恰好体现了人与计算机交流的一种途径,人给予函数参数,函数给予我们返回值(或者有时函数是void类型,也就是不返回任何值,但是void通常也是会完成我们需要的特定操作),也恰好是信息交换的一种方法。

04

关于面向对象编程

在学习c++的时候还会涉及到指针(pointer)这个概念,这是在c++中一个很重要的概念,也以后需要注意的东西,等你自己学到就会明白。

在学习完我之前所提及的那些(虽然我没有全部详细涉及)比较基础的计算机编程的概念后,你就会涉及OOP(object-oriented programming 面向对象的编程)。在高级编程语言中大量涉及甚至是基础,也是今后的编程趋势。

实际上只运用之前所讲的东西进行编程的话,可以狭义的成为面向过程的编程。实际上OOP是在函数之后,又一个简化我们编程的一种手段,我们将事情更加抽象但更加方便。通过定义我们自己的数据类型, 建立对象(object)来实现对数据的管理和操作。

通过对象来和计算机进行深入和有目的性的交流。面向对象编程的三大核心(重要但不仅限于):封装(encapsulation),继承(inheritance),多态(polymorphism) 。封装就是把我们定义的数据类型组装成一个整体,从而形成一个个可用的对象(有点像工厂流水线上的模具),继承就是获得某个或某些父类的一些特性在新的子类中运用(就如同子女从父母身上遗传的一些特性),多态就是实现我们所规定的一些抽象的可以运用或者重新定义的方法(简而言之就是一个事物可以在不同对象身上呈现的多种状态)。

面向对象编程不仅简化方便了我们的编程,同时保护了数据在交换过程中的隐私。类似private的,只能是自己对象才能知道和拥有(就如同自己的钱包只能自己掌控一样),类似public的,可以展示在main函数(主函数)中为其他数据所用。由此清晰地界定了数据的使用界限,也是编程历史上具有划时代意义的一个进步。

说了这么多,只是简单的描述了计算机的入门脉络,在以后还会学到数据结构(如何管理我们的数据),以及算法等等。希望能对你有所帮助。

至于技巧,我觉得最重要的就是你学习编程的方法,也就是我反复强调的,不仅仅专注于编程语言的本身,而是要随着深入地学习,不断掌握和理解编程的主要思想。

最后,非常感谢您阅读我的文章!有任何问题可以后台私信我,我都很乐意解答。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
浅梦一笑 浅梦一笑
4年前
学Python后到底能干什么?
Python是一种什么语言?Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的Java语言等,Python是他们其中的一种。首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等,
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
浅梦一笑 浅梦一笑
4年前
高考完自学python能为学习计算机编程打下基础
首先,对于即将踏入大学校园的准大学生来说,学习一门编程语言是不错的选择,不论是计算机相关专业还是其他专业,掌握一门编程语言对于后续的学习都会有一定的帮助,掌握编程语言可以提升自身的数据处理能力,这在当前的大数据时代还是比较重要的。Python是当前比较流行的全场景编程语言,当前Python语言不仅在IT互联网行业有广泛的应用,在传统行业,Python的应用场
学python的猫 学python的猫
4年前
python——零基础照样学
零基础,可以学编程嘛?这是很多初学者的心里都会存在的一个问题,当然,计算机方面的基础对任何一门编程语言的学习都是会有所帮助的,但是如果你在编程语言的学习上是零基础的话,也不用担心,因为不论哪门语言的学习,总是会有一个开始的。谁不是从零基础开始呢。我个人观点是python,是最适合作为学习编程路上的入门语言。原因大家都懂,python语言相对于其他语言来说
学python的猫 学python的猫
4年前
小白想学python,怎么做?
小白需要怎么学习python,python学习的难度大吗?学python需要从哪学起?学Python难?首先,我们普及一下编程语言的基础知识。编程语言的作用是为了让计算机干活,比如下载视频,音乐编辑文档等,而计算机干活的CPU只认识机器指令,所以,尽管编程语言不同,最后都要翻译成CPU能听懂的语言。而不同的编程语言,干同一个活,编写的代码量,差距也很大。Py
初学者学习python2还是python3?
如果你是一个初学者,或者你以前接触过其他的编程语言,你可能不知道,在开始学习python的时候都会遇到一个比较让人很头疼的问题:版本问题!!是学习python2还是学习python3?这是非常让人纠结的!搜索一下便会发现python3和python2是不兼容的,而且差异比较大,到底学习哪个版本呢?下面就来为大家分析一下:当初设计Python3
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Wesley13 Wesley13
3年前
Java基础学习心得笔记
对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变。面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做的事情抽象成对象,告诉对象去做。所以要想学好java入门,必须知道类和对象的概念。类是对生活中事物的抽象描述,比如人类,动物类,交通工具类;对象即是对类的具