首页 开发编程 正文

php刷oj怎么输入

编程语言PythonPython是一种面向对象有着代码简洁、可读性强特点的解释型计算机程序设计语言。将C语言中麻烦的指针和内存管理对开发者隐藏起来,另外Python这门语言强制用户用缩进进行排版。...

php刷oj怎么输入,学it需要什么基础?

1.首先要明白一点,任何人刚开始做一件事都是没有任何基础的,基础无非就是学习一个技能的先后顺序。

2.学习it首先要从编程语言开始,确定一门适合自己的语言,一般都是从C开始。不要以为编程是多么复杂的事情,其实你完全可以把它当做一门外语去学习,和从小学习汉语的过程类似。按照关键字-运算符-语法的过程去学习,然后勤加练习,最后可以写出完整程序。其实就好比我们学汉字写作文的过程,最终的程序就是一个作文。

3.培养自己的思维方式,这里的思维方式是说从程序的角度考虑问题,每当遇到问题时就要把其分解为多个步骤,每个步骤之间都有相应的关键,最后形成一个完整的解决方案。再复杂的程序都是由每个小部分组成。

4.深度学习,其实it领域很广泛,看自己想在哪方面发展:大数据、人工智能、以及现在新兴的VR等等,具体可以百度查询。然后在某个领域进行深度学习。

5.持续学习,计算机发展日新月异,每天都有新的技术产生,既然选择了这个领域,那我们就必须要跟上时代步伐,要不然早晚被淘汰,所以这个过程也很重要!

如何学编程?

编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。编程能提高逻辑思维能力,加强计算能力。

编程语言

Python

Python是一种面向对象有着代码简洁、可读性强特点的解释型计算机程序设计语言。代码简洁是因为它把许多的复杂的操作封装起来,将C语言中麻烦的指针和内存管理对开发者隐藏起来,使得在开发过程中,无须在意这部分的细节。另外Python这门语言强制用户用缩进进行排版,若不好好排版,则代码编译无法通过,或者运行过程会出现错误。

C语言

C语言是一门面向过程的、抽象化的广泛应用于底层开发的通用程序设计语言,能以简易的方式编译和处理低级存储器。C语言既具有高级语言的特点,又具有汇编语言的特点,是仅产生少量机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

是有简洁的语言、具有结构化的控制语句、丰富的数据类型、丰富的运算符、可对物理地址进行直接操作、代码具有较好的可移植性、可生成高质量、目标代码执行效率高的程序。

Java

Java通过面向作为静态对象的编程语言的代表,可以充分的实现面向的对象理论的编程语言,有简单性、功能强大、分布式、健壮性、安全性、平台独立与可移植性、多线程及动态性的特点。

Java支持在网络上应用,Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,它是分布式语言。所以用户可以产生分布式的客户机和服务器。网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。

PHP

PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。

使用 PHP 的最大的好处是它对于初学者来说极其简单,同时也给专业的程序员提供了各种高级的特性,只需几个小时就可以自己写一些简单的脚本。尽管 PHP 的开发是以服务端脚本为目的,但事实上其功能远不局限于此。

GO

Go语言(又称 Golang)是一种静态强类型、编译型语言,是一个开源编程环境,可以轻松构建简单、可靠和高效的软件。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。Go 内嵌了关联数组(也称为哈希表(Hashes)或字典(Dictionaries)),就像字符串类型一样。

对比

python和c语言的区别主要体现在:语言类型、内存管理、速度、应用、运行、对象、声明、测试和调试难度、复杂度、学习程度。 测试和调试难度不同:Python相对其他语言而言是非常简单的语言,高度集成,代码量少。Python中的测试和调试更容易;C中测试和调试更难。 学习难度不同:Python:Python程序更易于学习,编写和阅读;C语言:C程序语法比Python更难。

python 跟 java 一样是强类型语言,也就是说它不会根据环境变化自动改变数据类型。python 是动态语言,而 java 是静态语言。也就是说 python 在编程时,永远不用给任何变量指定数据类型,而 java 写程序时必须声明所有变量的数据类型。

python 的模块类似于 java 的 class,不过python模块导入会执行 代码的内容,而 java 不会。python 与 java 的执行方式还是蛮像的,都是将源码编译成 byte code 然后交给相应的虚拟机去执行。

Python的框架数量较少,而PHP中成熟的框架比较多;PHP是面向web的语言,而Python是多用途语言,也可以用于web开发;Python使用非常严格的缩进强制执行,使它比PHP更具可读性。

学习思路

认识编程

编程语言(programming language)又称程序设计语言,是一组用特定语言编写的用于执行特定任务的指令。主要用于开发桌面应用、操作系统、网站、移动应用等。

低级编程语言

它基于二进制数 0 和 1 工作,处理器直接运行低级程序,不需要编译器或解释器,因此用低级语言编写的程序可以运行得非常快。

低级语言进一步分为两部分

机器语言

机器语言也称为机器代码或目标代码,更容易阅读,因为它通常以二进制或十六进制形式(基数 16)形式显示。

它不需要翻译器来转换程序,因为计算机直接理解机器语言程序。

汇编语言

汇编语言是为特定处理器设计的,它以象征性和人类可理解的形式表示一组指令。它使用汇编程序将汇编语言转换为机器语言。

中级编程语言

中级编程语言介于低级编程语言和高级编程语言之间。

它也被称为中间程序语言和伪语言。

中级编程语言的优点是支持高级编程的特性,是一种用户友好的语言,与机器语言和人类语言密切相关。

例如:C、C++

高级编程语言

高级编程语言 (HLL) 旨在开发用户友好的软件程序和网站。

这种编程语言需要编译器或解释器将程序翻译成机器语言(执行程序)。

示例:Python、Java、JavaScript、PHP、C#、C++ 等。

编程实践

学习编程语言的过程简单描述为:过、抄、仿、改、调、看、练、创、悟。

基础知识点不求深解,语言什么样的,适用场合、基本语法格式

抄代码

从书上抄、例子中抄、边抄边想边想边回忆语法

模仿改

仿照给出的代码写出自己的代码

勤调试

不断调试验证自己想法,继续思考,再次验证。熟悉调试工具调试方法

看n遍

出错或者遇到问题时,将代码从头到尾看n遍直到快记住,找出问题原因

2-5步三遍以上

创新

拿出一个没有写过的根据要求,一步一步写出来,写不出来参考6

主动找到写代码的感觉和成就感,保持下去。

选择大于努力,只有切入一个适合自己的开发方向,才能持续进步。关于开发方向,我有以下两个选择标准。

兴趣

学习编程是一个非常枯燥的过程,内容多,时间长,成本高,即使报名了培训班也学不会,所以,我们首先要选择自己感兴趣的一个开发方向,这样不但能快速学习,以后还能持续进步。学习编程的过程是比较艰苦的,没有兴趣很难硬抗下来,此处的兴趣,是指别人无法撼动的热爱,是工作之余让你放松的事情。如果你只是有过某种想法,别人告诉你这个想法不靠谱,你就放弃了,这顶多是一时的鸡血。

学习方式

费曼学习法

在学完一个东西之后去给别人讲明白,注意是讲给别人听,当你写成文章发表在网上的时候,你自然会去用更通俗的语言,更清晰的逻辑去讲述这个事物背后的逻辑。这个过程是对自己学习的一个检验,也是加深映像整理思路的重要过程。

那么如果你是去记笔记的话,很有可能你会倾向于去照抄,或是不完全照抄,以“提纲”或是“知识点”的形式抄在本子上。说句实话,照抄的笔记真的没用,因为现在搜索引擎的能力已经可以让你把大多数东西快速找到,你为什么还要照抄到笔记本上呢?

从功利的角度考虑,技术文章的写作,别人可以直接访问,也可以逐渐累积你的影响力,一个好的个人技术博客,会给你的简历加分很多,而一个厚厚的笔记本,没有人会管你记了什么。

做好笔记

大多数人没有过目不忘的神技,学了也不一定马上掌握,需要过后花时间慢慢领悟,而且还有忘掉的风险,所以对于重要的知识点都要做好笔记。编程的过程中总会遇到各种各样的问题,比如编程环境的配置,常用的快捷键,编程过程中的错误、异常,软件更新问题等等。面对这些问题都是如何解决的,一定要记录下来,一是增加自己解决问题的经验,而是以防下次出现。

多看官方文档

外文资料互联网是一个更新迭代很快的行业,所有编程语言都会不断的更新新功能和修复旧Bug,网上查的资料很有可能是旧的解决方案,现在已经不适用了。所以最好最快的方法就是查看官方文档。

进入行业圈子

只有进入行业圈子与其他人交流,你才了解最新的行业动态,才知道自己需要更新哪些技能。

动手做项目

学习编程的最终目的就是用所学的做出具有一定功能的项目,而做项目又是最好的学习和巩固知识的方式。如果前期能力不足就先做一些简单的功能模块,一步一步慢慢来,不要一开始就要实现各种酷炫炸天功能,遇到不会的就在网上查, 现在互联网这么发达,获取资源也及其方便。而且开发前也最好在网上查一下有没有已经成型的框架或模板,什么都自己做一是很耗费时间,二是自己技术能力不足还可能留下不少坑。

学习Python

安装编程环境

第一步:访问Python官网,获取最新安装程序。

第二步:运行下载的安装程序,注意勾选“Add Python3.7 to PATH”,然后选择个性化安装,即“Customize installation”。

第三步:确保“pip”被勾选上,之后安装各种库需要用到pip。

第四步:高级选项,需要的可以修改安装目录,通常没有需要修改的,直接点“Install”。

第五步:等待程序自动安装完成。

第六步:出现如下界面,说明安装已完成。

第七步:验证方法,Windows+R 键打开“运行”窗口,输入cmd运行,进入命令提示窗口,再输入python,进入Python的命令模式,输入 print("Hello"),结果输出了 Hello,如下图所示,确定开发环境已安装完成。

运行环境

Hello World!

命令行

在Linux命令行输入:$python

将直接进入python。然后在命令行提示符>>>后面输入:>>>print('Hello World!')

可以看到,随后在屏幕上输出:

Hello World!

print是一个常用函数,其功能就是输出括号中得字符串。

(在Python 2.x中,print还可以是一个关键字,可写成print 'Hello World!',但这在3.x中行不通 )

小程序

另一个使用Python的方法,是写一个Python程序。用文本编辑器写一个.py结尾的文件,比如说hello.py

在hello.py中写入如下,并保存:print('Hello World!')

退出文本编辑器,然后在命令行输入:$python hello.py

来运行hello.py。可以看到Python随后输出Hello World!

脚本

我们还可以把Python程序hello.py改成一个可执行的脚本,直接执行:#!/usr/bin/env python

print('Hello World!')

需要修改上面程序的权限为可执行:chmod 755 hello.py

然后再命令行中,输入./hello.py

就可以直接运行了。

基本数据类型

变量不声明

Python的变量不需要声明,你可以直接输入:>>>a = 10

那么你的内存里就有了一个变量a, 它的值是10,它的类型是integer (整数)。 在此之前你不需要做什么特别的声明,而数据类型是Python自动决定的。

>>>print(a)

>>>print(type(a))

那么会有如下输出:

10

这里,我们学到一个内置函数type(),用以查询变量的类型。

回收变量名

如果你想让a存储不同的数据,你不需要删除原有变量就可以直接赋值。

>>>a = 1.3

>>>print(a,type(a))

会有如下输出

1.3

序列

sequence(序列)是一组有顺序的元素的集合,(严格的说,是对象的集合,但鉴于我们还没有引入“对象”概念,暂时说元素)序列可以包含一个或多个元素,也可以没有任何元素。

我们之前所说的基本数据类型,都可以作为序列的元素。元素还可以是另一个序列,以及我们以后要介绍的其他对象。

序列有两种:tuple(定值表; 也有翻译为元组) 和 list (表)

>>>s1 = (2, 1.3, 'love', 5.6, 9, 12, False) # s1是一个tuple

>>>s2 = [True, 5, 'smile'] # s2是一个list

>>>print(s1,type(s1))

>>>print(s2,type(s2))

tuple和list的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。

一个序列作为另一个序列的元素

>>>s3 = [1,[3,4,5]]

空序列

>>>s4 = []

自学

网站

菜鸟网站

这个python教程很适合小白学习,没有高深的原理,照着教程学就完事了。

菜鸟教程是一个提供免费编程学习的网站,里面不但能学到编程知识,还能运用在线编程工具,使你在学习的过程中得到发挥,实践得真理,边学边做中让基础打得更稳,让自己的知识更加稳固。在自己有不明白不理解的地方可以在网站的用户笔记中寻找大佬们的笔记,把自己所学和技术大佬的经验所融合,使自己更好地提升自己的能力。

菜鸟教程内容丰富,例如前端热门语言HTML5、CSS3、JavaScript、Vue等它该有的都有,都会从最基础的开始教,让刚学编程的小白由浅及深,一看就懂。每个知识点都有实例可以动手,直接在页面内做你想要的效果真的非常棒。菜鸟的排版简洁清晰有序,内容一针见血,让你一看就能明白其知识点的含义。

菜鸟教程不仅前端教程语言丰富,后端的Java、PHP、Python更是一应俱全,当然数据库、移动端、XML、ASP.NET、Web Service、开发工具和网站建设也是应有尽有,菜鸟教程有学到的知识如此之多,奋斗吧少年。

廖雪峰的官方网站

廖雪峰的官方网站比较推荐新手程序员学习前端,这个网站的教学视频的讲解相对来说会比较生动,没有其他教程那么死板,看起来也不至于那么犯困,也更便于新手去理解。总的来说,廖雪峰的官方网站作为一款启蒙类的前端学习网站还是相当不错的。

Python官方教程

这是Python官方出品的教程,可搭配Python标准库一起学。

书籍

《Python编程从入门到实践(第2版)》

作者:埃里克·马瑟斯 (EricMatthes)袁国忠 译

ISBN:9787115546081

出版:人民邮电出版社

本书是针对所有层次Python读者而作的Python门书。全书分两部分:部分介绍用Python编程所必须了解的基本概念,包括强大的Python库和工具,以及列表、字典、if语句、类、文件与异常、代码测试等内容;第二部分将理论付诸实践,讲解如何发三个项目,包括简单的2D游戏、利用数据生成交互式的信息图以及创建和定制简单的Web应用,并帮助读者解决常见编程问题和困惑。

《像计算机科学家一样学Python》

ISBN:9787115425515

作者:艾伦 B. 唐尼(Allen B. Downey)

出版:人民邮电出版社

本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程。贯穿全书的主体是如何思考、设计、发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介。全书共21章,详细介绍Python语言编程的方方面面。本书从基本的编程概念始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引领读者循序渐地学习变量、表达式、语句、函数和数据结构。书中还探讨了如何处理文件和数据库,如何理解对象、方法和面向对象编程,如何使用调试技巧来修正语法错误、运行时错误和语义错误。

《计算机科学丛书:Java编程思想》

ISBN:9787111213826

作者:[美] Bruce Eckel

出版:机械工业出版社

本书的作者拥有多年教学经验,对C、C++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、JavaI/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的好教材和参考书。

《疯狂Java讲义》

ISBN:9787121361586

作者:李刚

出版:电子工业出版社

《疯狂Java讲义(第4版)》深入介绍了Java编程的相关方面,《疯狂Java讲义(第4版)》内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、Java网络通信编程和Java反射机制。覆盖了java.lang、java.util、java.text、java.io和java.nio、java.sql、java.awt、javax.swing包下绝大部分类和接口。本书重点介绍了Java 9的模块化系统,还详细介绍了Java 9的jshell工具、多版本JAR包、匿名内部类的菱形语法、增强的try语句、私有接口方法,以及Java 9新增的各种API功能。

%3Chowto_content%3E[{"type":"paragraph","attrs":{"is_abstract":true},"children":[{"type":"text","text":"编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程","id":""},{"type":"text","text":"。编程能提高逻辑思维能力,加强计算能力。","id":""}],"text":"","id":"WceadiusyoyOwaxoNSsceBGjnVd"},{"type":"heading","attrs":{"level":1},"children":[{"type":"text","text":"编程语言","id":""}],"text":"","id":"Oqa2diWSioCqoexAhV7cd5qbnLd"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"Python","id":""}],"text":"","id":"RYCIdicsYoyiUgx6drTcXYVMn4d"},{"type":"paragraph","children":[{"type":"text","text":"Python是一种面向对象有着代码简洁、可读性强特点的解释型计算机程序设计语言。代码简洁是因为它把许多的复杂的操作封装起来,将C语言中麻烦的指针和内存管理对开发者隐藏起来,使得在开发过程中,无须在意这部分的细节。另外Python这门语言强制用户用缩进进行排版,若不好好排版,则代码编译无法通过,或者运行过程会出现错误。 ","id":""}],"text":"","id":"SeiEdQ4GAoc8Koxm6Oucd3MonOb"},{"type":"image","attrs":{"height":701,"note":[{"type":"text","text":"Python","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/aeaa7b58948c4124bd69b6417e51906a","width":1563},"text":"","id":"DSA6demiCo8YmgxGYDmcdbmenQf"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"C语言","id":""}],"text":"","id":"RKKodkW2Wo0muoxaYdScS9gDnse"},{"type":"paragraph","children":[{"type":"text","text":"C语言是一门面向过程的、抽象化的广泛应用于底层开发的通用程序设计语言,能以简易的方式编译和处理低级存储器。C语言既具有高级语言的特点,又具有汇编语言的特点,是仅产生少量机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。","id":""}],"text":"","id":"WkgAdki6koYcsSxzF93csMeynCk"},{"type":"paragraph","children":[{"type":"text","text":"是有简洁的语言、具有结构化的控制语句、丰富的数据类型、丰富的运算符、可对物理地址进行直接操作、代码具有较好的可移植性、可生成高质量、目标代码执行效率高的程序。","id":""}],"text":"","id":"FkCQdiCsmo40iqxg7ujcPBy9nHe"},{"type":"image","attrs":{"height":806,"note":[{"type":"text","text":"C语言","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/6f859719f77941aea4a29e7119f20a7f","width":1603},"text":"","id":"ME8ad6QuAoiWo2xe8zCc3gXrnog"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"Java","id":""}],"text":"","id":"FWK8d2GSUoMME2xUxHzc8kMYnQR"},{"type":"paragraph","children":[{"type":"text","text":"Java通过面向作为静态对象的编程语言的代表,可以充分的实现面向的对象理论的编程语言,有简单性、功能强大、分布式、健壮性、安全性、平台独立与可移植性、多线程及动态性的特点。 ","id":""}],"text":"","id":"TeIod6souoE4EkxgjEfcOZkLnoc"},{"type":"paragraph","children":[{"type":"text","text":"Java支持在网络上应用,Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,它是分布式语言。所以用户可以产生分布式的客户机和服务器。网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。","id":""}],"text":"","id":"Te4udsisCoK44gxMpuPcDy11nfd"},{"type":"image","attrs":{"height":839,"note":[{"type":"text","text":"Java","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/0e1656925be54be393b49dc2e2ac7b80","width":1893},"text":"","id":"SUW6d0aw2oskC4x2FMSc3WhNnRg"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"PHP","id":""}],"text":"","id":"Ic6kdo08aoY4GuxeY6Qc3Z8nnNe"},{"type":"paragraph","children":[{"type":"text","text":"PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。","id":""}],"text":"","id":"IwQ8dKQCeoGAmixqM7BcXdgUnAd"},{"type":"paragraph","children":[{"type":"text","text":"使用 PHP 的最大的好处是它对于初学者来说极其简单,同时也给专业的程序员提供了各种高级的特性,只需几个小时就可以自己写一些简单的脚本。尽管 PHP 的开发是以服务端脚本为目的,但事实上其功能远不局限于此。","id":""}],"text":"","id":"DW0Odakc6ouW6Kxu6kPcdPF3nZd"},{"type":"image","attrs":{"height":648,"note":[{"type":"text","text":"PHP","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/300a2e3c7e954e7b8def92163c3f3673","width":1828},"text":"","id":"Naq2duscgogQ2oxYjg2cosy1nEe"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"GO","id":""}],"text":"","id":"CwWwdCYeAoMuMuxCiNpcqJKpnRg"},{"type":"paragraph","children":[{"type":"text","text":"Go语言(又称 Golang)是一种静态强类型、编译型语言,是一个开源编程环境,可以轻松构建简单、可靠和高效的软件。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。Go 内嵌了关联数组(也称为哈希表(Hashes)或字典(Dictionaries)),就像字符串类型一样。","id":""}],"text":"","id":"SIY6dO8ecoGoOOxmUVPcViIAnxb"},{"type":"image","attrs":{"height":772,"note":[{"type":"text","text":"GO","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/3a879bbdd4b64d2b9b54d3f7358e7ed3","width":1522},"text":"","id":"GuiUdc6UCoKUWGxaCogc2jcrnFe"},{"type":"heading","attrs":{"level":1},"children":[{"type":"text","text":"对比","id":""}],"text":"","id":"EGqmdKMsGogUeexukQ5cA2wTnQf"},{"type":"paragraph","children":[{"type":"text","text":"python和c语言的区别主要体现在:语言类型、内存管理、速度、应用、运行、对象、声明、测试和调试难度、复杂度、学习程度。 测试和调试难度不同:Python相对其他语言而言是非常简单的语言,高度集成,代码量少。Python中的测试和调试更容易;C中测试和调试更难。 学习难度不同:Python:Python程序更易于学习,编写和阅读;C语言:C程序语法比Python更难。","id":""}],"text":"","id":"HEyKduA4Iow6Kwx8ZiCcPQaVnHd"},{"type":"paragraph","children":[{"type":"text","text":"python 跟 java 一样是强类型语言,也就是说它不会根据环境变化自动改变数据类型。python 是动态语言,而 java 是静态语言。也就是说 python 在编程时,永远不用给任何变量指定数据类型,而 java 写程序时必须声明所有变量的数据类型。","id":""}],"text":"","id":"I6yAdOUQqoQSIYxs7XVcPwlSnMe"},{"type":"paragraph","children":[{"type":"text","text":"python 的模块类似于 java 的 class,不过python模块导入会执行 代码的内容,而 java 不会。python 与 java 的执行方式还是蛮像的,都是将源码编译成 byte code 然后交给相应的虚拟机去执行。","id":""}],"text":"","id":"VmgOds4Ceoi0KoxGa8nc0GLDneb"},{"type":"paragraph","children":[{"type":"text","text":"Python的框架数量较少,而PHP中成熟的框架比较多;PHP是面向web的语言,而Python是多用途语言,也可以用于web开发;Python使用非常严格的缩进强制执行,使它比PHP更具可读性。","id":""}],"text":"","id":"MW22d02SsoU2oYxesy1cIEfsnYb"},{"type":"paragraph","children":[{"type":"text","text":"","id":""}],"text":"","id":"SA4kdwiSIoMW42xCGzDcMMyXnfe"},{"type":"heading","attrs":{"level":1},"children":[{"type":"text","text":"学习思路","id":""}],"text":"","id":"ECkydGqiIoEmKoxQzshckC4rncd"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"认识编程","id":""}],"text":"","id":"IkSQdA02Ko64KKxoHAGc6cEwnIb"},{"type":"paragraph","children":[{"type":"text","text":"编程语言(programming language)又称程序设计语言,是一组用特定语言编写的用于执行特定任务的指令。主要用于开发桌面应用、操作系统、网站、移动应用等。","id":""}],"text":"","id":"HM2udQ0giowuekxoV1kchShynhc"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"低级编程语言","id":""}],"text":"","id":"CkEQdgiGooaKGaxesABch5T1nlh"},{"type":"paragraph","children":[{"type":"text","text":"它基于二进制数 0 和 1 工作,处理器直接运行低级程序,不需要编译器或解释器,因此用低级语言编写的程序可以运行得非常快。","id":""}],"text":"","id":"UgoMde6QIou8yAxambScEu1vnOb"},{"type":"paragraph","children":[{"type":"text","text":"低级语言进一步分为两部分","id":""}],"text":"","id":"ASy6dMoGooWsKaxeCDAcTUajnde"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":"机器语言","id":""}],"text":"","id":"Z8MKdYOOmoucO0xai2uc1TUKnTd"},{"type":"paragraph","children":[{"type":"text","text":"机器语言也称为机器代码或目标代码,更容易阅读,因为它通常以二进制或十六进制形式(基数 16)形式显示。","id":""}],"text":"","id":"RIgMdsykeoaykIxawjVcRE7HnXf"},{"type":"paragraph","children":[{"type":"text","text":"它不需要翻译器来转换程序,因为计算机直接理解机器语言程序。","id":""}],"text":"","id":"LMsSdcWGsooA00xgzJUcR80Inuf"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":" 汇编语言","id":""}],"text":"","id":"Xi0gdKkgGo0oKYxE0vacrHAtngb"},{"type":"paragraph","children":[{"type":"text","text":"汇编语言是为特定处理器设计的,它以象征性和人类可理解的形式表示一组指令。它使用汇编程序将汇编语言转换为机器语言。","id":""}],"text":"","id":"GYOQdMKQuoGkoExyYdkcuU2anIf"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"中级编程语言","id":""}],"text":"","id":"RGmIdsSwmoY8A2x89NUcdbWbnjg"},{"type":"paragraph","children":[{"type":"text","text":"中级编程语言介于低级编程语言和高级编程语言之间。","id":""}],"text":"","id":"Q822d2sssoQQGYxAzK6c9GqFnbd"},{"type":"paragraph","children":[{"type":"text","text":"它也被称为中间程序语言和伪语言。","id":""}],"text":"","id":"BuG2d8s6AoiIWCxGQt1cGdbgneg"},{"type":"paragraph","children":[{"type":"text","text":"中级编程语言的优点是支持高级编程的特性,是一种用户友好的语言,与机器语言和人类语言密切相关。","id":""}],"text":"","id":"FIg6dMMGaoYSu0xSyhpcKu46nPh"},{"type":"paragraph","children":[{"type":"text","text":"例如:C、C++","id":""}],"text":"","id":"LK8sduKWaoa0oUxQXspcudVbnid"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"高级编程语言","id":""}],"text":"","id":"FaYsdG0KqoOGW6xa4u0c0UQVn9c"},{"type":"paragraph","children":[{"type":"text","text":"高级编程语言 (HLL) 旨在开发用户友好的软件程序和网站。","id":""}],"text":"","id":"Rsi4dE64WoykEkxzYAIcCNc8nbH"},{"type":"paragraph","children":[{"type":"text","text":"这种编程语言需要编译器或解释器将程序翻译成机器语言(执行程序)。","id":""}],"text":"","id":"IOqmdGCEcoeC2wxXJElc68FsnvL"},{"type":"paragraph","children":[{"type":"text","text":"示例:Python、Java、JavaScript、PHP、C#、C++ 等。","id":""}],"text":"","id":"CgagdYoyyoQMCwxJ65zcUJF6ntC"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"编程实践","id":""}],"text":"","id":"KGCQdQuyyoIu8Cx8DxYcWwFGnXf"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":"学习编程语言的过程简单描述为:过、抄、仿、改、调、看、练、创、悟。","id":""}],"text":"","id":"JUUOdqi2Ko6mSix0qMBcv94pnAb"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"过","id":""}],"text":"","id":"HqSsduwsUoqSamxyGKWcWlLqnDd"},{"type":"paragraph","children":[{"type":"text","text":"基础知识点不求深解,语言什么样的,适用场合、基本语法格式","id":""}],"text":"","id":"XO0mdIAcMoOisgxuAb6cTIvHn9I"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"抄代码","id":""}],"text":"","id":"ZwqWdC2AioWsWGxNBikcRf0unBf"},{"type":"paragraph","children":[{"type":"text","text":"从书上抄、例子中抄、边抄边想边想边回忆语法","id":""}],"text":"","id":"XQWmdmoMcoQ82axuI6Lcjb6knDe"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"模仿改","id":""}],"text":"","id":"WOc0dUWuAogWYAx8vZycJ1OYnfd"},{"type":"paragraph","children":[{"type":"text","text":"仿照给出的代码写出自己的代码","id":""}],"text":"","id":"Iokkd0EewoMSMuxqCAKch8tRnZf"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"勤调试","id":""}],"text":"","id":"CCIsd2secoIAiOxUXGhcQ55Mncc"},{"type":"paragraph","children":[{"type":"text","text":"不断调试验证自己想法,继续思考,再次验证。熟悉调试工具调试方法","id":""}],"text":"","id":"Sg8CdMOy8oMyysxC0jyc1mzunff"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"看n遍","id":""}],"text":"","id":"UW4Id0cOooa6EAxIro7c3bT5nle"},{"type":"paragraph","children":[{"type":"text","text":"出错或者遇到问题时,将代码从头到尾看n遍直到快记住,找出问题原因","id":""}],"text":"","id":"ROsUdMEyQoewGUxB0JWcntn7nh6"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"练","id":""}],"text":"","id":"Ag2EdIGQQowSOOxRfD2cRMnOnNl"},{"type":"paragraph","children":[{"type":"text","text":"2-5步三遍以上","id":""}],"text":"","id":"D8eod4eqmoEUcQx0XNVcgNE9n7Z"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"创新","id":""}],"text":"","id":"JqU2damiUoQm4CxUSSDcpg16nAn"},{"type":"paragraph","children":[{"type":"text","text":"拿出一个没有写过的根据要求,一步一步写出来,写不出来参考6","id":""}],"text":"","id":"DIeidUEkooIGGWxmAUQcWltanhh"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"悟","id":""}],"text":"","id":"V4ikdSQY4oacQWxQ3RocOJTbnQc"},{"type":"paragraph","children":[{"type":"text","text":"主动找到写代码的感觉和成就感,保持下去。","id":""}],"text":"","id":"ZOCqd80k8oi8GgxkFcUcGuxan6b"},{"type":"paragraph","children":[{"type":"text","text":"选择大于努力,只有切入一个适合自己的开发方向,才能持续进步。关于开发方向,我有以下两个选择标准。 ","id":""}],"text":"","id":"R620d6Qwko6O4gxeS37cRQxjnwd"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":" 兴趣","id":""}],"text":"","id":"WCkGd64Gwo6UcqxoV8Icg1G8nCf"},{"type":"paragraph","children":[{"type":"text","text":"学习编程是一个非常枯燥的过程,内容多,时间长,成本高,即使报名了培训班也学不会,所以,我们首先要选择自己感兴趣的一个开发方向,这样不但能快速学习,以后还能持续进步。学习编程的过程是比较艰苦的,没有兴趣很难硬抗下来,此处的兴趣,是指别人无法撼动的热爱,是工作之余让你放松的事情。如果你只是有过某种想法,别人告诉你这个想法不靠谱,你就放弃了,这顶多是一时的鸡血。","id":""}],"text":"","id":"BgqEdSkuMoqmqExFM9Dc7lBYnmk"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"学习方式","id":""}],"text":"","id":"FG6OdgEWAosIcexYLUecc900nLd"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"费曼学习法","id":""}],"text":"","id":"FOYAdYUk6oEk4gx7u0ycaoPsnEy"},{"type":"paragraph","children":[{"type":"text","text":"在学完一个东西之后去给别人讲明白,注意是讲给别人听,当你写成文章发表在网上的时候,你自然会去用更通俗的语言,更清晰的逻辑去讲述这个事物背后的逻辑。这个过程是对自己学习的一个检验,也是加深映像整理思路的重要过程。","id":""}],"text":"","id":"EyYWdScu2o0ca2xIRdgcR5k2nnd"},{"type":"paragraph","children":[{"type":"text","text":"那么如果你是去记笔记的话,很有可能你会倾向于去照抄,或是不完全照抄,以“提纲”或是“知识点”的形式抄在本子上。说句实话,照抄的笔记真的没用,因为现在搜索引擎的能力已经可以让你把大多数东西快速找到,你为什么还要照抄到笔记本上呢?","id":""}],"text":"","id":"HSu4dusiqoIcCcxCOhTccQL5n3e"},{"type":"paragraph","children":[{"type":"text","text":"从功利的角度考虑,技术文章的写作,别人可以直接访问,也可以逐渐累积你的影响力,一个好的个人技术博客,会给你的简历加分很多,而一个厚厚的笔记本,没有人会管你记了什么。","id":""}],"text":"","id":"SOUSdQWIoo6OMYxIldZcuIU9nKh"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"做好笔记","id":""}],"text":"","id":"SUoEdyCk0oOa2Ux2lGlcxcJKnXd"},{"type":"paragraph","children":[{"type":"text","text":"大多数人没有过目不忘的神技,学了也不一定马上掌握,需要过后花时间慢慢领悟,而且还有忘掉的风险,所以对于重要的知识点都要做好笔记。编程的过程中总会遇到各种各样的问题,比如编程环境的配置,常用的快捷键,编程过程中的错误、异常,软件更新问题等等。面对这些问题都是如何解决的,一定要记录下来,一是增加自己解决问题的经验,而是以防下次出现。","id":""}],"text":"","id":"OGGwdgoU0oca0gxamqlcZ7HVnCf"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"多看官方文档","id":""}],"text":"","id":"HqyKdYYu8oU6QCxKmzicQi2qnxb"},{"type":"paragraph","children":[{"type":"text","text":"外文资料互联网是一个更新迭代很快的行业,所有编程语言都会不断的更新新功能和修复旧Bug,网上查的资料很有可能是旧的解决方案,现在已经不适用了。所以最好最快的方法就是查看官方文档。","id":""}],"text":"","id":"FGkAdKUGioyu6OxiQ7pcForVnXc"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"进入行业圈子","id":""}],"text":"","id":"OEwIdSQ4EoK0U8xHbsJcVXchnCw"},{"type":"paragraph","children":[{"type":"text","text":"只有进入行业圈子与其他人交流,你才了解最新的行业动态,才知道自己需要更新哪些技能。","id":""}],"text":"","id":"XqkadOImEoakm4xCGrscdtHOnrg"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"动手做项目","id":""}],"text":"","id":"SMIQdeS4Qo60gKxSE1qcpjf9n1b"},{"type":"paragraph","children":[{"type":"text","text":"学习编程的最终目的就是用所学的做出具有一定功能的项目,而做项目又是最好的学习和巩固知识的方式。如果前期能力不足就先做一些简单的功能模块,一步一步慢慢来,不要一开始就要实现各种酷炫炸天功能,遇到不会的就在网上查, 现在互联网这么发达,获取资源也及其方便。而且开发前也最好在网上查一下有没有已经成型的框架或模板,什么都自己做一是很耗费时间,二是自己技术能力不足还可能留下不少坑。","id":""}],"text":"","id":"E8SSdsQksoOykkxq8qhc2D9UnPh"},{"type":"heading","attrs":{"level":1},"children":[{"type":"text","text":"学习Python","id":""}],"text":"","id":"Noeodu46Eoyg4Oxcz2Lcvsh6nWf"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"安装编程环境","id":""}],"text":"","id":"Ucwad8wU0omK2YxUmNnc76Pjneb"},{"type":"paragraph","children":[{"type":"text","text":"第一步:访问Python官网,获取最新安装程序。","id":""}],"text":"","id":"CIWwdiUucoGM4Axe1XscufX4npb"},{"type":"image","attrs":{"height":253,"note":[{"type":"text","text":"安装编程环境","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/6243e00debbc4a70b8dc277fa202d4e3","width":500},"text":"","id":"ZAUEdiiUoockeYx4FwFcKNmVnsb"},{"type":"paragraph","children":[{"type":"text","text":" ","id":""},{"type":"text","text":"第二步:运行下载的安装程序,注意勾选“Add Python3.7 to PATH”,然后选择个性化安装,即“Customize installation”。","id":""}],"text":"","id":"DikMdkUMeoIIwOxEFNjcgKC8nfb"},{"type":"image","attrs":{"height":308,"note":[{"type":"text","text":"安装编程环境","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/61c8842e690b42fc8de3ab3bce410252","width":500},"text":"","id":"VeISdQwCcogI8yxKqjrcxkXBnXf"},{"type":"paragraph","children":[{"type":"text","text":" ","id":""},{"type":"text","text":"第三步:确保“pip”被勾选上,之后安装各种库需要用到pip。","id":""}],"text":"","id":"JakkdcOG8omkoCxUt62cPMoinKb"},{"type":"image","attrs":{"height":308,"note":[{"type":"text","text":"安装编程环境","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/257a0f4181604843b6b89e1ab0d338fc","width":500},"text":"","id":"HQUGdykoMoSUmGxymgjcOwounzg"},{"type":"paragraph","children":[{"type":"text","text":" ","id":""},{"type":"text","text":"第四步:高级选项,需要的可以修改安装目录,通常没有需要修改的,直接点“Install”。","id":""}],"text":"","id":"U8gUdO22So4GWMxk5AAcYxhgnwd"},{"type":"image","attrs":{"height":308,"note":[{"type":"text","text":"安装编程环境","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/a0bb9ea7ffad45d5aeef1f09f1dde2a4","width":500},"text":"","id":"IGQwdQag4oi06uxWuyacQYQAnwe"},{"type":"paragraph","children":[{"type":"text","text":" ","id":""},{"type":"text","text":"第五步:等待程序自动安装完成。","id":""}],"text":"","id":"ZqiadCqiEoWewYx0AC8cBcnTneh"},{"type":"image","attrs":{"height":308,"note":[{"type":"text","text":"安装编程环境","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/a46cba8c1cc64627a6bcb5bf991fe3f9","width":500},"text":"","id":"EmCWd0sMaoowOIxuA2lctZeXn8e"},{"type":"paragraph","children":[{"type":"text","text":" ","id":""},{"type":"text","text":"第六步:出现如下界面,说明安装已完成。","id":""}],"text":"","id":"CSiudKqaqomAkcx2B6tcVnpGnPd"},{"type":"image","attrs":{"height":308,"note":[{"type":"text","text":"安装编程环境","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/379805f0786b447583f0a32c4d573b32","width":500},"text":"","id":"UiCYdig0KoeIUWx049tcMB6bn6f"},{"type":"paragraph","children":[{"type":"text","text":" ","id":""},{"type":"text","text":"第七步:验证方法,Windows+R 键打开“运行”窗口,输入cmd运行,进入命令提示窗口,再输入python,进入Python的命令模式,输入 print(\"Hello\"),结果输出了 Hello,如下图所示,确定开发环境已安装完成。","id":""}],"text":"","id":"Lmoede4cuoEwQKxmabGcMLaXnXf"},{"type":"image","attrs":{"height":261,"note":[{"type":"text","text":"安装编程环境","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/f84920cc98b14ad9beb9aae12c2e06f7","width":500},"text":"","id":"MsIgduUaEosaG6xSunHcnIm8nvf"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"运行环境","id":""}],"text":"","id":"Lqiwde2SYoKEoOxquyEcgRRLnLd"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"Hello World!","id":""}],"text":"","id":"IIgSdccwkoeaG8xmadlcUw6Bnbh"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":"命令行","id":""}],"text":"","id":"JAaKdcMMUoSaKcxW4c1ccXeGnPb"},{"type":"paragraph","children":[{"type":"text","text":"在Linux命令行输入:$python","id":""}],"text":"","id":"Ac0Udg8sKoo64WxKUEpcVHc9ngc"},{"type":"paragraph","children":[{"type":"text","text":"将直接进入python。然后在命令行提示符\u003e\u003e\u003e后面输入:\u003e\u003e\u003eprint('Hello World!')","id":""}],"text":"","id":"C6OwdcCKao0kG8x4u6bchmSwn9e"},{"type":"paragraph","children":[{"type":"text","text":"可以看到,随后在屏幕上输出:","id":""}],"text":"","id":"HMyIdGao0omCcMxyu1Kc9DyFnQJ"},{"type":"paragraph","children":[{"type":"text","text":"Hello World!","id":""}],"text":"","id":"HCWydoCIKo02yMxOy7GcZ1MBnkc"},{"type":"paragraph","children":[{"type":"text","text":"print是一个常用函数,其功能就是输出括号中得字符串。","id":""}],"text":"","id":"K4gYdSoiuo00icxAHmpc1eimnGc"},{"type":"paragraph","children":[{"type":"text","text":"(在Python 2.x中,print还可以是一个关键字,可写成print 'Hello World!',但这在3.x中行不通 )","id":""}],"text":"","id":"BQACduGE6oCgSOx2fvYcEcbPn4f"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":"小程序","id":""}],"text":"","id":"NGqsdeUKwoewYQx3zgdcf4Q4nsb"},{"type":"paragraph","children":[{"type":"text","text":"另一个使用Python的方法,是写一个Python程序。用文本编辑器写一个.py结尾的文件,比如说hello.py","id":""}],"text":"","id":"LkWEdeSkSosWMexWc7PcjpdvnJg"},{"type":"paragraph","children":[{"type":"text","text":"在hello.py中写入如下,并保存:print('Hello World!')","id":""}],"text":"","id":"JgOsdAKe4ogmyExYHgLcTmQunyg"},{"type":"paragraph","children":[{"type":"text","text":"退出文本编辑器,然后在命令行输入:$python hello.py","id":""}],"text":"","id":"So08dE2imoYYQCxQ2QFcO82cnJL"},{"type":"paragraph","children":[{"type":"text","text":"来运行hello.py。可以看到Python随后输出Hello World!","id":""}],"text":"","id":"AIKCdsmeYoCwwUx0su3cHkHqnvb"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":"脚本","id":""}],"text":"","id":"ZsEMdwYWcoQOsQxSSv6cYylLn5e"},{"type":"paragraph","children":[{"type":"text","text":"我们还可以把Python程序hello.py改成一个可执行的脚本,直接执行:#!/usr/bin/env python","id":""}],"text":"","id":"LqUgd8CeQoCIeux81qFc7h69nHE"},{"type":"paragraph","children":[{"type":"text","text":"print('Hello World!')","id":""}],"text":"","id":"ASc8d6YmkoASeOxcNArcGC3Anbc"},{"type":"paragraph","children":[{"type":"text","text":"需要修改上面程序的权限为可执行:chmod 755 hello.py","id":""}],"text":"","id":"SY4Sd2aEMoy8E2x8moScAd5Gnbc"},{"type":"paragraph","children":[{"type":"text","text":"然后再命令行中,输入./hello.py","id":""}],"text":"","id":"KcuSdKiEGomYGmxcxZ9cfAzwn9d"},{"type":"paragraph","children":[{"type":"text","text":"就可以直接运行了。","id":""}],"text":"","id":"WoeudWqOAosyosx8vdLcVyTQnre"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"基本数据类型","id":""}],"text":"","id":"PCwKdMoS2oKi4gxFAqZctL2XnJp"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"变量不声明","id":""}],"text":"","id":"HsuQdOC6kosCkax4ML4cAJ8Dnje"},{"type":"paragraph","children":[{"type":"text","text":"Python的变量不需要声明,你可以直接输入:\u003e\u003e\u003ea = 10","id":""}],"text":"","id":"SoA0dk2IKogMgOxewwVc4LkKnMe"},{"type":"paragraph","children":[{"type":"text","text":"那么你的内存里就有了一个变量a, 它的值是10,它的类型是integer (整数)。 在此之前你不需要做什么特别的声明,而数据类型是Python自动决定的。","id":""}],"text":"","id":"KuuidCs4SooqGex6ZITcthxHnHc"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003eprint(a)","id":""}],"text":"","id":"VUaadIGOqoYYS4xwFOLcR1CVnEh"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003eprint(type(a))","id":""}],"text":"","id":"K2uYdIgSwoIaKexCWFvc3GZnnIe"},{"type":"paragraph","children":[{"type":"text","text":"那么会有如下输出:","id":""}],"text":"","id":"VYCKdqwy4oWG6Ux2xQjcXvipnzV"},{"type":"paragraph","children":[{"type":"text","text":"10","id":""}],"text":"","id":"FukWdMmaAoceg4xCaJ5c8ktfnuf"},{"type":"paragraph","children":[{"type":"text","text":"\u003cclass 'int'\u003e","id":""}],"text":"","id":"Mo4IdywqgoqKI8xSBu7cFmLyndb"},{"type":"paragraph","children":[{"type":"text","text":"这里,我们学到一个内置函数type(),用以查询变量的类型。","id":""}],"text":"","id":"C8yKdI8amoWwssxaEpQcGuK7nTf"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"回收变量名","id":""}],"text":"","id":"LmgCdYeiuoIWgWxOon3c3P1Hncd"},{"type":"paragraph","children":[{"type":"text","text":"如果你想让a存储不同的数据,你不需要删除原有变量就可以直接赋值。","id":""}],"text":"","id":"J0C0dc8UWo4CESx4m4jceRTAn4e"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003ea = 1.3","id":""}],"text":"","id":"Tme6dEUG8ogECYxMrZOcjBzCnfg"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003eprint(a,type(a))","id":""}],"text":"","id":"Xo8mdWieio2ayqxYvCqcNNnKnac"},{"type":"paragraph","children":[{"type":"text","text":"会有如下输出","id":""}],"text":"","id":"HEQgdWU6so2EW0x2pYGc8Up6nLf"},{"type":"paragraph","children":[{"type":"text","text":"1.3 \u003cclass 'float'\u003e","id":""}],"text":"","id":"Xe0Qd0YkEoWcUixQxzNcsc7BnQc"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"序列","id":""}],"text":"","id":"K4sIdyYiaooeSKx0ENocBIlknzb"},{"type":"paragraph","children":[{"type":"text","text":"sequence(序列)是一组有顺序的元素的集合,(严格的说,是对象的集合,但鉴于我们还没有引入“对象”概念,暂时说元素)序列可以包含一个或多个元素,也可以没有任何元素。","id":""}],"text":"","id":"NKG2d8UMAokU4mxs9Snc667DnQf"},{"type":"paragraph","children":[{"type":"text","text":"我们之前所说的基本数据类型,都可以作为序列的元素。元素还可以是另一个序列,以及我们以后要介绍的其他对象。","id":""}],"text":"","id":"SIe2duU4WoQEuMxUTXrcAmmKn2f"},{"type":"paragraph","children":[{"type":"text","text":"序列有两种:tuple(定值表; 也有翻译为元组) 和 list (表)","id":""}],"text":"","id":"RmMwdgGU4oqywAxIZbQcqQHjnNe"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003es1 = (2, 1.3, 'love', 5.6, 9, 12, False) # s1是一个tuple","id":""}],"text":"","id":"WOaCdYes4o2k8yxWsrqckvlxnDd"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003es2 = [True, 5, 'smile'] # s2是一个list","id":""}],"text":"","id":"De8ydgYi2o0ciixAjmgcINQnnzd"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003eprint(s1,type(s1))","id":""}],"text":"","id":"IMqQdWcKEogyGuxORI4cXDm9n5N"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003eprint(s2,type(s2))","id":""}],"text":"","id":"EY6idcQaooqaaGx0o8HcNZcmnHc"},{"type":"paragraph","children":[{"type":"text","text":"tuple和list的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。","id":""}],"text":"","id":"A8A0d4wsEoQM6gxy8wfczcPunJg"},{"type":"paragraph","children":[{"type":"text","text":"一个序列作为另一个序列的元素","id":""}],"text":"","id":"BiqUdsI6Koks4gxyig4ckRhgnGd"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003es3 = [1,[3,4,5]]","id":""}],"text":"","id":"YoyEdOKywoYs8Ax4E1ic6uIan3c"},{"type":"paragraph","children":[{"type":"text","text":"空序列","id":""}],"text":"","id":"OWykdUkeWo4UOQxWiu3cKYkDnAd"},{"type":"paragraph","children":[{"type":"text","text":"\u003e\u003e\u003es4 = []","id":""}],"text":"","id":"VWEIdSqWooyg40xMpeYcDMo9nbd"},{"type":"heading","attrs":{"level":1},"children":[{"type":"text","text":"自学","id":""}],"text":"","id":"KW4Odiy8Eo4QyMxmAKFciGS8n4f"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"网站","id":""}],"text":"","id":"G4AadueAIoa4o8xs9gwcSrAxnme"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"菜鸟网站","id":""}],"text":"","id":"KqWid0A6UoAOIAxIlTWcxC9Nnsd"},{"type":"paragraph","children":[{"type":"text","text":"这个python教程很适合小白学习,没有高深的原理,照着教程学就完事了。","id":""}],"text":"","id":"UiaCdQGKyo6Wg2xwxHoc2Dxmnxt"},{"type":"paragraph","children":[{"type":"text","text":"菜鸟教程是一个提供免费编程学习的网站,里面不但能学到编程知识,还能运用在线编程工具,使你在学习的过程中得到发挥,实践得真理,边学边做中让基础打得更稳,让自己的知识更加稳固。在自己有不明白不理解的地方可以在网站的用户笔记中寻找大佬们的笔记,把自己所学和技术大佬的经验所融合,使自己更好地提升自己的能力。","id":""}],"text":"","id":"ZEgwdWWSsoq682x8f5wchxAynZe"},{"type":"paragraph","children":[{"type":"text","text":"菜鸟教程内容丰富,例如前端热门语言HTML5、CSS3、JavaScript、Vue等它该有的都有,都会从最基础的开始教,让刚学编程的小白由浅及深,一看就懂。每个知识点都有实例可以动手,直接在页面内做你想要的效果真的非常棒。菜鸟的排版简洁清晰有序,内容一针见血,让你一看就能明白其知识点的含义。","id":""}],"text":"","id":"WiU8de84coa6cQxcTG1chmmunkh"},{"type":"paragraph","children":[{"type":"text","text":"菜鸟教程不仅前端教程语言丰富,后端的Java、PHP、Python更是一应俱全,当然数据库、移动端、XML、","id":""},{"type":"text","text":"ASP.NET","id":""},{"type":"text","text":"、Web Service、开发工具和网站建设也是应有尽有,菜鸟教程有学到的知识如此之多,奋斗吧少年。","id":""}],"text":"","id":"RggwdQ6uqoSiQWxI1ENck2ktnYe"},{"type":"image","attrs":{"height":383,"note":[{"type":"text","text":"菜鸟网站","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/0798ab45151c4bd0ad7d0b1c1b4f9566","width":720},"text":"","id":"NI2SdAC2QosicOxQ9YxcHeSknnh"},{"type":"paragraph","children":[{"type":"text","text":" ","id":""}],"text":"","id":"DsoCdsMcuoAoi0x8BarcCb3Sn3f"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"廖雪峰的官方网站","id":""}],"text":"","id":"CwsqdmSY6os00wxdcNSctzmwnHH"},{"type":"paragraph","children":[{"type":"text","text":"廖雪峰的官方网站比较推荐新手程序员学习前端,这个网站的教学视频的讲解相对来说会比较生动,没有其他教程那么死板,看起来也不至于那么犯困,也更便于新手去理解。总的来说,廖雪峰的官方网站作为一款启蒙类的前端学习网站还是相当不错的。","id":""}],"text":"","id":"SimcdEA4mo2QwExkXoAcSn0RnEh"},{"type":"image","attrs":{"height":750,"note":[{"type":"text","text":"廖雪峰的官方网站","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/b21b64b7b6c74706ab17469ccbf6b14b","width":1783},"text":"","id":"NWWwdMy2AoWIwgxI10pcF9jJnhh"},{"type":"heading","attrs":{"level":3},"children":[{"type":"text","text":"Python官方教程","id":""}],"text":"","id":"M0cGdIGsSoAYA8xaOKYcPxMInuf"},{"type":"paragraph","children":[{"type":"text","text":"这是Python官方出品的教程,可搭配Python标准库一起学。","id":""}],"text":"","id":"QCUKde0YCoe4aixMp6mc34NynAf"},{"type":"image","attrs":{"height":810,"note":[{"type":"text","text":"Python官方教程","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/4871398dc75d4de4ab867263607d7048","width":1445},"text":"","id":"NQI2dc86io4EgwxgVEXcl1svnae"},{"type":"heading","attrs":{"level":2},"children":[{"type":"text","text":"书籍","id":""}],"text":"","id":"ZYEAdMaCaoY8mSxGJFecEcpannb"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":"《Python编程从入门到实践(第2版)》","id":""}],"text":"","id":"OKe4diK4goU4Swxg9Edc2CcjnQZ"},{"type":"paragraph","children":[{"type":"text","text":"作者:埃里克·马瑟斯 (EricMatthes)袁国忠 译","id":""}],"text":"","id":"PKQcdAAcGoUoC0xOqEocFhTCnlh"},{"type":"paragraph","children":[{"type":"text","text":"ISBN:9787115546081","id":""}],"text":"","id":"DyUWd4aUio4a60xu6ogcPj1Bn2d"},{"type":"paragraph","children":[{"type":"text","text":"出版:人民邮电出版社","id":""}],"text":"","id":"Rs42dYymGoSIuUxWU7RctjUznMe"},{"type":"paragraph","children":[{"type":"text","text":"本书是针对所有层次Python读者而作的Python门书。全书分两部分:部分介绍用Python编程所必须了解的基本概念,包括强大的Python库和工具,以及列表、字典、if语句、类、文件与异常、代码测试等内容;第二部分将理论付诸实践,讲解如何发三个项目,包括简单的2D游戏、利用数据生成交互式的信息图以及创建和定制简单的Web应用,并帮助读者解决常见编程问题和困惑。","id":""}],"text":"","id":"HoQodykKqo8COCxqyqwccoimnKh"},{"type":"image","attrs":{"height":619,"note":[{"type":"text","text":"书籍","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/f952cca888c0454e838c59d17090daf7","width":501},"text":"","id":"ZU6qdUUScoCUA4x46jtchHQIndf"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":"《像计算机科学家一样学Python》","id":""}],"text":"","id":"E28edua0koSygsxnyHBcIkeznGk"},{"type":"paragraph","children":[{"type":"text","text":"ISBN:9787115425515","id":""}],"text":"","id":"N44Udusiso2siQx61owcIo13n6d"},{"type":"paragraph","children":[{"type":"text","text":"作者:","id":""},{"type":"text","text":"艾伦","id":""},{"type":"text","text":" B. ","id":""},{"type":"text","text":"唐尼","id":""},{"type":"text","text":"(","id":""},{"type":"text","text":"Allen","id":""},{"type":"text","text":" B. ","id":""},{"type":"text","text":"Downey","id":""},{"type":"text","text":")","id":""}],"text":"","id":"RkEudeuIsoy2CmxW6NxcCRV1nfh"},{"type":"paragraph","children":[{"type":"text","text":"出版:人民邮电出版社","id":""}],"text":"","id":"WYKKdki4WoSykmx6OJVcqWOunDg"},{"type":"paragraph","children":[{"type":"text","text":"本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程。贯穿全书的主体是如何思考、设计、发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介。全书共21章,详细介绍Python语言编程的方方面面。本书从基本的编程概念始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引领读者循序渐地学习变量、表达式、语句、函数和数据结构。书中还探讨了如何处理文件和数据库,如何理解对象、方法和面向对象编程,如何使用调试技巧来修正语法错误、运行时错误和语义错误。","id":""}],"text":"","id":"BK6ydyYuaouyusx4pJfcnzCvnPh"},{"type":"image","attrs":{"height":701,"note":[{"type":"text","text":"书籍","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/2fcdba851350469c8f20a6fd2e54a3f8","width":526},"text":"","id":"Gukwd8S6oo0uMKxNGdKcgvECnCz"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":"《计算机科学丛书:Java编程思想》","id":""}],"text":"","id":"Qyk4dmCKMouoUwxDv4BcZSonnv6"},{"type":"paragraph","children":[{"type":"text","text":"ISBN:9787111213826","id":""}],"text":"","id":"LOyCdEOUeo0MSixsRQOcsCACn1A"},{"type":"paragraph","children":[{"type":"text","text":"作者:[美] Bruce Eckel","id":""}],"text":"","id":"NY06d6MISoicmMxkpXAcDYjwnxe"},{"type":"paragraph","children":[{"type":"text","text":"出版:机械工业出版社","id":""}],"text":"","id":"SASYdyGwMoMiMqx6Cn3c7fPfnFf"},{"type":"paragraph","children":[{"type":"text","text":"本书的作者拥有多年教学经验,对C、C++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、JavaI/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的好教材和参考书。","id":""}],"text":"","id":"DmCwdc4UWo8kIyxkrbKcGAPFn3S"},{"type":"image","attrs":{"height":603,"note":[{"type":"text","text":"书籍","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/58be17df22694f249be5f539f0f12cbf","width":436},"text":"","id":"NuusdkO0KoEuqcxkhDUcaHIinNd"},{"type":"paragraph","children":[{"type":"text","marks":[{"type":"strong"}],"text":"《疯狂Java讲义》","id":""}],"text":"","id":"Za0CdW40komg2KxiOCtcsN4pnNf"},{"type":"paragraph","children":[{"type":"text","text":"ISBN:9787121361586","id":""}],"text":"","id":"XAcQd6qs0oWqqGxUFeAcY2danZe"},{"type":"paragraph","children":[{"type":"text","text":"作者:李刚","id":""}],"text":"","id":"HImOdIWASoK8YGxkvUZcJhCHnrh"},{"type":"paragraph","children":[{"type":"text","text":"出版:电子工业出版社","id":""}],"text":"","id":"P0s8dmIUioYcsIxE13WcCFIgnJc"},{"type":"paragraph","children":[{"type":"text","text":"《疯狂Java讲义(第4版)》深入介绍了Java编程的相关方面,《疯狂Java讲义(第4版)》内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、Java网络通信编程和Java反射机制。覆盖了java.lang、java.util、java.text、java.io和java.nio、java.sql、java.awt、javax.swing包下绝大部分类和接口。本书重点介绍了Java 9的模块化系统,还详细介绍了Java 9的jshell工具、多版本JAR包、匿名内部类的菱形语法、增强的try语句、私有接口方法,以及Java 9新增的各种API功能。","id":""}],"text":"","id":"HqYKdqMICoW6Iexk7uecKI1ZnNb"},{"type":"image","attrs":{"height":685,"note":[{"type":"text","text":"书籍","id":""}],"url":"{{image_domain}}tos-cn-i-qvj2lq49k0/73f9b8449be24d31b0eb1b31f5d545fa","width":528},"text":"","id":"Nosid8Yukoa0aOxA54IcivKanue"},{"type":"paragraph","children":[{"type":"text","text":"","id":""}],"text":"","id":"ESKMd2eyCoKUQmxCgyCcBWYbn6f"}]%3C%2Fhowto_content%3E

大二软件工程专业学生感到很迷茫怎么办?

作为一名教育工作者,我来回答一下这个问题。

首先,对于软件工程专业的同学来说,进入到大二之后,要尽快确定一个自己的主攻方向,然后围绕这个主攻方向来组织知识结构,包括选择何种编程语言、数据库、技术平台等等。

对于软件工程专业的同学来说,主攻方向的选择空间还是比较大的,当前除了可以选择传统的Web开发方向之外,还可以选择大数据方向、云计算方向、人工智能方向、区块链方向等,这些方向未来的发展空间也相对比较大,而且人才需求潜力也比较大。

在确定了主攻方向之后,再确定选择何种编程语言,因为编程语言的应用与场景有非常紧密的联系,不同的场景往往需要采用不同的编程语言。如果选择大数据开发方向,那么可以重点学习一下Java语言,接着学习大数据平台的相关知识,基于大数据平台来完成各种场景下的开发,而如果选择的是大数据分析方向,那么可以重点学习一下Python,然后可以继续学习一下机器学习知识。

人工智能领域的细分方向非常多,目前可以重点关注一下计算机视觉和自然语言处理这两个方向,这两个方向目前的落地应用案例也比较多,可以参考的学习资料也相对比较多。如果选择主攻人工智能领域,那么可以重点学习一下Python,当前大部分人工智能平台都支持Python,而且很多行业场景下的智能应用也都是基于Python开发的。

总体上来说,对于软件工程专业的同学来说,如果没有进一步读研的计划,一定要重视Java语言的学习,然后基于Java语言做场景开发的相关练习,这对于提升自身的就业竞争力是有很大帮助的。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以私信我!

22岁非计算机专业工科妹子裸辞转行程序员?

根据你的描述完全可行,你有两个特点符合做程序员:对编程感兴趣和喜欢独自解决问题。

要想当程序员对编程感兴趣很重要,只有感兴趣才会愿意去学习,如果不感兴趣就很难学的好,就会觉得编程是很枯燥的,学习一段时间以后就会开始讨厌编程,是当不了程序员的。从python开始自学也是一个比较正确的选择,python语言语法简单易懂,很快就可以学会并做出一个简单的项目,这样才会有成就感,有动力继续学习。

只对编程感兴趣是不够的,编程中难免会遇到自己不懂的问题,这个时候就需要你有耐心去研究和解决问题,不能浮躁。你喜欢独自解决问题这一点很不错,只要坚持学习,会有所收获的。

在学习时可以关注一下招聘需求,特别是里面的技能要求,看自己是否符合标准,如果自己不知道的知识就要去学习。在自学的过程中最好自己想一个小的项目,这样按照项目的功能,自己去学习,补充不足。如果只看基础会觉得自己已经懂了,等到实际开发项目时还是不会。

其实我所掌握的编程语言都是自学的,感兴趣可以关注我的头条号。

黑客之家头条号分享黑客技术,物联网、GO、Python、Kotlin、Android、Java编程知识,科技资讯等喜欢的朋友可以关注我的头条号!

如何快速学习编程?

1. 我应该选择什么编程语言

可能困扰编程新手最多的一个问题是【我应该学什么编程语言】或者【我需要学习哪些课程才能做出一个web、一个app】,很多人一直纠结这个问题,陷入了东学一点、西看一点的死循环,到头来啥也没学好,这会很浪费时间。

刚上大一的时候,我也很想知道应该选择什么编程语言。我问了很多人,网上各种查资料,但所能得到的答案都很片面,多数对这个问题答非所问,总是回答说“某某编程语言难”,“某某编程语言性能好”。其实作为初学者,我们对计算机体系都不了解,就不要过多地去纠结性能,或者难易等因素,原因我等下再说。

如果你有明确的方向,那么很好选择。如果你想做算法、机器学习方向,那么python是最好的选择。如果你想做web开发,java、php等都可以。如果想做一些更底层的工作,那么就可以选c。当然这是建立在你有明确方向的基础上。可是,很多人都没怎么接触过计算机行业,特别是和我一样刚入学就被调剂到计算机专业的人。对这些同学来说,各个编程语言就只是个名字,除了叫法不一样,你根本不知道它们有什么差别。所以索性不要纠结了,我替你选一个吧。

如果你是在校大学生,那么你有大把连续的时间,就先学习c,然后再学c++。我个人是学c入门的,也许很多人不理解我为什么推荐学c,因为c和c++都很难、很复杂,看起来并不适合入门。然而正是它们的难和复杂才能让你更好地理解计算机系统【计算机系统不是指操作系统】。学习编程不是学习编程语言,而是学习一个计算机生态,即一个庞大的知识体系。只会编程语言而不理解整个计算机的体系,就像只会写字而写不出好文章。了解c/c++和了解计算机系统是极为贴合的,向下可以帮助你更容易地理解操作系统、编译原理、计算机网络、计算机组成原理,为什么呢?因为较为底层的东西很多都是用c实现的,和系统的贴合度极高,很多教材源码甚至教程,在讲述这些知识的时候都是用c或c++作为媒介。而向上,c++面向对象的机制,也可以做出一些应用,譬如五子棋游戏等,也不会显得那么枯燥。花个小半年时间了解c和c++,之后你就会觉得看书、看资料可以轻松很多。

如果你是一个上班族,但是刚刚学习编程,可能学c和c++对你来说有些复杂和困难,因为学习它们确实是很需要时间。你们不像在校生那样有大把的连续时间,而零碎的时间去学习一个比较复杂的东西效果不见得有那么好,所以可以先学一些【更容易见效】的编程语言,从python入手吧,至少能快速做出一些小应用,不至于丢失了兴趣,但是真的要入门编程又还得看看与计算机系统相关的书籍,这样才能更深层次地去编程,譬如【深入理解计算机系统】这一本书可以读很多遍,这本书把整个计算机系统给串起来了。

2.学习编程,我需要学习哪些课程?

我要学哪些课程?我为什么要学习如高数、离散数学、线性代数、概率论等课程?

这个问题也是之前困扰了我很久的问题。不过我现在想通了,对于【高数、离散、线性代数、概率论】等课程,很好解释,做算法的同学肯定知道为啥要学习这些课程。机器学习中会大量用到上述提到的课程,所以会比较好理解。对在校生而言,学校开设的很多课程我们不知道为什么要学,我们很疑惑,不知道学它有什么用,这个时候我们就会很纠结,还会产生抵触情绪。这很正常,因为我们学习得不够深入,自然不能理解它们的用处。

在我看来,大学本科课程更多的是面向“面”的教学,即什么课程都教给你一些,但是又讲得不那么深入;而工作或者读研,更多的则是面向“点”的学习,用到的知识更专。本科时,学校也不知道你以后是去搞算法、还是搞架构、还是搞服务器开发,甚至去搞硬件,所以学校需要你学很多课程,至少有个了解。对学生来说,一方面可以从中选择自己感兴趣的点;一方面也可以对未来的就业方向有些启发。所以即使像数电、模电等课程,虽然之后可能用不着,但是你也要学,并且会花费大量的时间。虽然你最后不一定去搞硬件,但是这些课程也会让你更容易去理解一些知识,比如cpu中的逻辑器件。

如果你在大一的时候就有一个明确的定位,知道自己今后想从事哪方面的工作,课程与课程之间是可以调一下优先级的。不过像大学物理,这种课程确实是对编程没有帮助,但是像我前面所说的,大学教育更注重广度,大物等课程可能就是为了给你普及生活常识吧。

其实,大学教育的问题是普遍存在的,我认为我们学习一项技能的时候,应该采取的是项目驱动式学习,即需要用到什么东西时不会了再去学,而不是先填鸭式的都填进脑子,并且在学习的过程中我们还不知道它这是干嘛用的,等之后用到了,甚至不记得自己学过,反而查资料才会想起:哦,原来我之前学的xx科目是这个用处啊,可是我当时并没有好好学。很多时候学生时间的浪费可能还是要怪老师、怪学校,他们一开始没给我们做好充分的课程介绍。所以,在经过比较多的编程和项目实践后,我认为一个比较好的学习方式是,改良版的项目驱动学习法。即:

学习一段时间,做个小项目,将做项目遇到的问题记下来,针对性地学习相关知识,然后再实践,再学一段时间理论,让知识成网状发射状地变大。当然,项目驱动式学习有一个弊端,就是每次学习的知识都是项目所需要的,很零碎、不成体系,所以需要改良,即在采取项目驱动学习法的时候每天抽一段时间去完整地读一本书,或者一个相关问题的完整介绍,这样就很容易把一些知识成体系地串起来。这样一段时间下来,慢慢的,你就知道我们为什么要学那么多科目,学这些科目能干什么。

为了表达地更加形象,我就举一个小例子,是我最近遇到的。我本身的工作是做Linux C++的,但不仅限于此。我个人对python、数据分析,以及机器学习等内容比较感兴趣,大家可以看到我最近也在我的专栏发布了很多文章。就从数据获取开始,我讲讲我这两个月做了什么东西。

谈到数据获取,可能最容易想到的是爬虫,爬虫是一个被说烂了的话题,所以我不想多说它是什么。很多时候有人觉得爬虫简单,为什么呢,因为有现成的框架,所以获取少量的数据就比较容易。但是当你需要爬取的数据很大的时候(比如我之前抓取了某网站500万用户的数据,在下班的时间、用自己家里普通的pc,计算机性能并不是那么好,比不上服务器,又要在不被封IP的情况下抓到这么大量的数据,然后对数据进行清洗,最后还要可视化展示),使用现成的爬虫框架就并不是那么容易实现了。况且,我需要抓很多数据源,并不是一锤子买卖。所以我选择去开发一个系统,即在现有的框架下进行二次开发,搭建一个属于自己的爬虫系统,并植入一些算法。我在系统中添加了很多中间件,直到现在,它还可以在10分钟内就部署一个能抓取大量数据的爬虫应用。当然,这个过程也遇到了不少麻烦,我就简单讲讲,怎么去攻克一个个问题。

下面先给出一个树形图,从上往下每一个圈都代表了学习过程中遇到的难点,如果你现在看不懂,没关系,我想告诉你的是一种梳理知识的方法:

如上图所示,就是一个项目驱动式学习的例子,我们的目的是为了获取数据,所以选择了爬虫:

爬虫可以理解为一个简单的过程:发送request,获取response,然后提取数据。这个过程会涉及到网络,是发送http还是https请求;目标网站是否需要登录,是post请求还是get请求,从这条线,衍生出了一条对网络进行学习的路径。获取到网页之后,如果不是结构化的数据,可能返回的是一个html源代码,那么可能就需要了解dom,或者html页面解析的知识,甚至需要了解一下前端开发。在抓取的过程中,经常会遇到数据中途不能被爬取的情况,一般是IP被封禁了,那么可能又要用上代理,代理是什么呢?http,https代理能不能混用呢?如何构建一个代理池呢?这里又有很多要学习的东西。还有可能遇到的情况是,抓下来的数据是加密的,需要通过js解密,这时候就要了解一下js,如何用爬虫模拟浏览器进行抓取。除此之外,如果抓取的频率不对,很多数据源会给你假数据,这就是一些经验问题了,本文不是技术文,所以就不多讨论。当解决了上述问题后,我们好像可以拿到一些数据了,但是当数据大起来,问题又复杂了,你可能需要使用分布式抓取了,这时候你可能需要了解一下redis,当request产生的速度大于其消费的速度之后,你的任务队列可能爆炸,所以这里又涉及到算法和数据结构的应用了。数据量上去之后,把数据写在文件里面是不靠谱的,这时候又涉及到存储了,到底是使用关系型数据库还是非关系型数据库呢,有什么区别呢?存进去的数据怎么去重呢?为什么insert操作越来越卡了呢?电脑怎么越来越热了呢?索引是什么,什么时候该建立索引呢?这里又牵扯到数据库原理相关的知识。遇到一些比较难处理的网站,比如有验证码识别该怎么办呢?其实对于很多纯数字和字母的验证码都很好解决,自己用深度学习训练即可。在TensorFlow的Demo中就要生成验证码自己训练的教程,然后制定个中间件放在爬虫系统中,这个问题就解决了。可是什么是深度学习呢?这里又引出一条对深度学习进行探索的例子,而我自己也是之前在学校的时候自学了小半年机器学习,有了一定的基础后,才能比较容易地上手TensorFlow框架。再往下就比较深了。上述六点简单讲了讲项目驱动式学习的介绍,其实,你看到的每一个小圆圈,深挖下去都大有文章。我们现在看到的只是冰山一角,任何一条学习路径学习下去都深无止境,我们不可能完全学会,可是项目驱动式学习最大的好处是让你知道你应该去学习什么,而不是先学一大堆知识,再去做一个项目。严格来说,项目驱动式学习的可视化路径是一张网,而不是一棵树,这里画成树状只是为了便于大家理解。

除了获得数据,还有清洗数据、分析数据,甚至挖掘数据,最后可视化数据并且展示数据,这里我就不一一介绍了。

3.学习编程是否需要制定计划?

学习编程是否需要制定计划,该制定什么样的计划呢?

我认为不只是编程需要制定计划,其他任何的学习和工作都需要制定计划。我从13年上大学就开始定期给自己制定计划,这个习惯也一直坚持到了现在,受益匪浅。当然也不只是制定学习计划,还可以列一些自己需要做的其他的事情。我最近在整理笔记的时候也发现了一些之前记录的计划和清单,可以给大家看看。比如下图就是我14年写的笔记,笔记上都留下了最后一次打开的时间。列举了一些自己需要看的文章,因为当时不太懂得规划,所以比较乱。

到了16年的时候,我做计划做得更加有条理了。下图是16年10月30日的计划,那时候我已经大四了,并且已经找到了工作、签了满意的offer,并且没有什么课,按理说可以放松放松了,不过我还是制定了一些学习计划,并且选择在11月去百度实习。从内容上看,主要是学习英语和计算机专业课,因为大一大二的时候我确实不明白为什么要学习专业课,到了大三下想清楚原因以后,我也就一直在重新学习,因为计算机专业课真的很重要!学好了这些课,能让你在日后的学习工作中轻松不少:

除了大四制定的计划外,大二的时候我也制定过较为详细的学习计划(如下图),把需要学习的内容进行了编号,存入表格,这样才能让你过得有条不紊。当然,很难完全按照计划去执行,不过制定相应的计划能让你清楚地知道自己应该干什么。

所以,如果你是在校生,那么好好制定一个计划吧,因为你有大把的时间。当然,如果你已经毕业了,没关系,我现在也在上班,同样也列举了自己最近要学习的内容,如下图(2月27日更新过),包括了短期和长期需要学习的内容:

4.编程是否需要做笔记和写博客?

我觉得,写不写博客无所谓,因为博客是要写出来给大家看的,可能要保证格式美观、语法也要尽量准确,最好比较有文采,我觉得太麻烦也就一直没写。而笔记是必须要做的,并且记笔记是一个长期的过程。在学习的过程中,我们一直都在追求一种最高效的学习方法,比如,同一个班的同学,他用他的学习方法考上了清华,而你用同样的方法就不行,为什么?因为他的方法对他自己而言是定制化的,可能且大概率不适合你,比如他的笔记你不一定能看懂,因为他可能设计了一套属于自己的符号。而就编程而言,很多同学说善用搜索引擎,是对的,可是搜索引擎搜出来的是别人的答案。你照搬过来,也许可以用,但是你没有记住,这些知识并不属于你,之后你可能还会遇到同样的问题,又要再搜索一遍,可能很难找到之前的那个答案了。但是记笔记就不一样,记笔记是定制化的,对你自己定制,你可以用自己最爽的表达方式来描述一个问题,是自己写给自己看的东西,看了几遍之后就能非常迅速和容易地理解。之后遇到相同的问题可以快速地通过找笔记解决。

举个例子,下图是我记录的一些关于gdb【linux下调试c++的工具】的使用的一些笔记。我只记录了我自己最常用的一些内容,也许你看着很乱,但是我就能很容易看懂,这就是我的定制化。

记笔记的习惯一定要坚持,等过个一年或者两年,这就是你巨大的财富,因为那是只有你才能看懂的东西。我已经记录了4年多、1G多的内容,现在的笔记基本已经形成了体系,可以给大家展示其中的一部分。

专业知识相关笔记:

开发相关的笔记:

一些类目:

5.有什么比较好的编程方法?

除了上述分享的一些方法,我认为在同一时间段不要学习太多类别的课程,比如你可以同时学习python和html/css,但是你不要同时学python、操作系统、编译原理、计算机组成、数据结构、网络,我曾经试过,一门课没学一会儿就学下一门,其实上一门根本学不到什么实际的知识。因为记忆知识是符合艾宾浩斯记忆曲线的。对于一门课,特别是很难的专业课,譬如操作系统,你每天看半小时,效果是比较差的,可能你热身就得半小时。所以宁可每天学两门,然后每一门学长一点的时间,比如两小时。【毕竟学校上课,一次课也得两小时】,要避免贪多,一口吃不成个胖子。

6.我需要刷oj么?

我认为刚开始编程的时候还是应该刷的,但是一定要注意,不要被你周围的“X神”给误导了。因为我上大学的时候,身边总是有很多搞计算机竞赛的人,他们之间都互相称对方为“X神”,某某神又使用一个牛逼的算法,将程序时间从1秒降低到了0.999秒。我要劝大家的是,刷题不是为了达到这个目的,不是说非要在竞赛中拿奖,除非你是特别喜欢,否则,没必要去背代码。我们刷题的目的是适应写代码的感觉,在这个过程中你会遇到编译错误,你会慢慢去记住一些语法、关键字,并理解一些概念,还可以自己去使用它,比如实现数据结构。慢慢的你就会变得有经验,知道一些错误产生的原因。我也是慢慢这样过来的,我现在在工作和下班以后写代码时,基本都不用IDE了,比如写c++,要么vim,要么就是sublime,而调试用的是我前面提到的工具gdb。即,有一个文本编辑器就能写代码,脱离了IDE的束缚。在写oj之后一段时间,在比较熟练了之后,就可以不去刷题了,可以去譬如github这样的网站上找点项目来看,然后自己跟着写一下,编程能力慢慢就提升了。就计算机专业来说,很多同学在大一上完编程课之后,就很少写代码了,这样是很不好的。刷题除了可以锻炼编程能力,对于找工作前突击也很有作用。比如,我之前投递过华为公司的研发岗位,校招的时候有笔试题。我就在16年国庆的时候刷了一下华为的oj,我记得笔试是600分的总分,过100就给面试机会,而我很轻松的就拿了500分,而当时也就刷了20多道华为的题。

7.看书还是看视频?

网上有不少人鄙视看视频学习的同学,我不知道为什么,因为我认为看视频是一个很好的学习方式。不过我们得明白看书和看视频分别有什么优缺点。

其实我是很建议看视频入门的,因为目前网上的应用型【非学术型:比如清华大学的操作系统,非常难】的视频都是很简单的,很多是面向初学者的,视频能用较短的时间告诉你你现在所学的技术可以干什么,可能需要先修哪些知识,可以帮助我们搭建一个项目驱动式学习的网络。可是视频也有个缺点:就是知识非常的杂,很不系统。虽然现在很多教学网站都提供了学习路径,但是这些路径中的视频很多时候都不是同一个老师录制的,只是按照知识的依赖关系排的顺序,所以,如果想通过视频去系统地学习一门知识,是比较困难的。【当然,一些学术型的视频还是很推荐的,比如斯坦福的机器学习,清华的操作系统、数据结构等课程,能坚持看完,绝对受益匪浅】。而应用型的,比如web开发等知识,还是得看书。书籍等特点就是系统化,由浅入深,你可以定制化地看自己薄弱的章节。所以一个比较好的学习方式是:

看视频入门,看书进阶。

8.多久能学会编程?

其实这个问题是没有答案的,如果只是想做出一个小应用,2个月足矣,而就我个人而言,我认为学习编程不是学习一种编程语言,而是学习一个生态,一个计算机系统,所以无止境。

9.我应该选择什么资料,看什么书?

其实这个问题也是很多编程新手容易困惑的问题。网络上拥有我们一辈子都看不完的教程和资料,所以现在应该不会存在找不着视频教程、找不着书看的问题。而问题就是我们不知道看什么视频、看什么书。从开始学编程到现在,我也买了上百本书,而真正适合自己的好书并不多。而视频教程的问题就更严重了,东看一点、西看一点,知识很难组织成网络。所以学习编程的过程中,我们遇到的最大的问题是:当我们遇到问题的时候,在大量资料面前,我们不知道选择什么资料去学习。即使我们使用项目驱动式学习的方法找到了我们的方向,但是同一个路径下,也有很多资料。前文列举的项目驱动式学习的图中,我们是自上而下的去发现问题,然后再解决问题。如果能有人帮我们组织好学习路径,然后自下而上地去学习,那么效率可能会提高很多。

不过不用担心,我已经尽我所能,将我看过或者我认为好的课程和书本资料给串了串,整理好上传了,所有学习资料均免费,无任何收费课程。

资料百度云地址: https://pan.baidu.com/s/11Pk-TAKuiyKaY9Llxpdj2Q 提取码: w4mk

另外,很多新手反馈不会搭环境,那我给大家推荐一款可以在线运行代码的网站,那个背单词app百词斩推出的学习编程的网站,在线编辑,在线运行,避免了你搭环境的痛苦,直接运行即可,这个环境使用是免费的,点击FreeCode,选择“代码练习”新建文件就可以了:

这个网站对初学者比较友好,不过目前只有Python环境,其他的环境得再等等。

百词斩一直走的都是黑科技路线,并且出的课程也是采用的及时反馈的模式,也正是在他们家自己搭建的环境上,进行的一个练习,对电脑的配置也没有什么要求,甚至平板和手机等终端上都可以使用,也是按背单词那套来设计的,感兴趣的同学也可以去看看,也可以去公众号回复「免费教程」能白嫖免费的课程,感觉也还挺扎实的,实在不感兴趣的,也可以免费薅一下他家的编程环境,对电脑配置真的没有什么要求。

本文转载自互联网,如有侵权,联系删除