想学好一个东西,先得搞懂你为什么要学它。
01. Why Python?
Python 是数据科学界的主流编程语言,相对于传统的 Excel 等数据处理工具,Python 具备处理海量数据的能力,并且可以执行机器学习算法。从数据获取(网络爬虫等工具)、数据清理到数据分析拟合再到最终的可视化呈现,Python都能胜任。
相比 C、C++、Fortran 等编译语言,Python 作为动态解释语言,可以像 Matlab 等科学计算工具一样“写一行,跑一行”——对用户更加友好,也更适于新手入门。在日渐繁荣的机器学习、人工智能领域更是独当一面,这是 Python 近年来热度稳步攀升甚至在有的统计中高居榜首的原因,也是我站(http://jizhi.im)选择 Python 作为主要编程语言的原因。下图为2016年编程语言相对热度(图片来自:https://www.codeeval.com)
当然,如果你想要在计算机科学领域有更深入的研究,我们还是推荐你也学习一下 C 或 Java 等语言。
02. 边学♂边做
始终觉得,看视频不是一种很好的学技能方式,尽管视频仍是在线教育的绝对主流。很多朋友报名过不少编程网课,并加入了学员交流群组,最后发现很多令人困惑的问题不在课程内容本身,而是本地开发环境的部署,或者操作系统、软件版本差异造成的障碍。
即使克服了以上软硬件的底层困难,看视频还是一种比较容易疲倦的体验,因为过程中缺少互动和反馈。游戏之所以好玩,有的UI让人沉浸,其根本要素都在于反馈。在UI设计中,每个组件都有多种状态的外观,时刻让人获知自己的行为(点击、聚焦、失焦)及其结果。而游戏,特别是动作游戏,则对反馈提出了毫秒级的精确要求,才能得到理想的“打击感”。
集智(http://jizhi.im)希望能够让每一位读者都能发挥主观能动性,不仅是单向的信息输入,而是时刻知道自己在做什么,做的是否正确优雅,产生了哪些影响,这是用户与文章课程的互动。
如果发展顺利,用户与用户的互动(PK)将是更好的催化剂,初步计划是建立 Kaggle 那样的竞赛平台,并融入类 Github 的社区功能,大家一言不和就 show code,就像斗图一样自然。
03. Python基本元素之变量(Variable)
在实际应用当中,很多数值将反复出现,比如圆周率 π,或者自然常数 e(常量也是一种变量),如果不想每次都重复输入十几位小数的话,最好预先定义为变量,更不用说那些需要频繁变动的参数。
Python 中定义变量非常简单,只需要起好名字,用等号赋值。比如要定义一个变量叫 answer 其值是 42 ,则代码就是:
除下划线_以外的特殊符号如+,-不能用于命名变量。Python中已有的关键字如 for,if,import 也不能直接用作变量名,当然只要不是完全匹配的,像 forif,for_if 还是可以的,只是一般不推荐。
对一个变量多次赋值即可完成更改,请运行查看程序执行结果。
如果程序编写正确,你将获得 Excited 提示,否则将获得其他评价(试了就知道)。
04. 注释
稍有常识的人都看得出,Python 不是易语言,不可能执行中文(至少当前的3.5版本是这样),而上面的初始代码中却含有“# 代码补完”字样,并且没有报错。
这是因为有注释符号#,其所在行之后的内容都不会被解释器执行,只是显示给代码的阅读者。注释可以提高代码的可读性,这在团队协作中尤为重要。
05. Print函数
我们仍未知道那天程序运行时发生了什么,也没有必要全都知道,但有些变量的值还是需要关心的,这时就可以用 print() 函数将它们输出到屏幕上。函数是封装好的程序,普通的使用者并不需要深入了解 print() 的作用机理,只在需要时调用即可,这就避免了每次都自创一套输出内容的方法(重复造轮子)。活用函数使程序更加模块化,提高了代码的重复利用率。
函数的最基本构成是输入、执行语句和返回值,print 以变量为参数,返回值就是变量的值,并且会输出到屏幕。
下面请读者自定义一个名为 age 的变量,并定义为 90,再用print()将其输出。(
06. 数据类型
之前出现过的几个变量,比如42,9527都是整型变量。除此之外还有浮点型变量,字符型变量等。
浮点型变量可以表示小数:233.333,1926.0817。
字符型变量可以同来表示文本信息,用单引号('')或双引号("")表示:'苟',"苟"。注意单引号和双引号虽然没有太大区别,但是不能混用,像'苟"是不行的。
在赋值过程中,不需要明文指定变量的类型,Python 解释器接到消息,会根据数值是否含有小数和引号自动判断。
07. Type函数
type() 函数的用法与 print() 类似,应该说所有函数用起来都是差不多的,它的作用是返回输入参数的类型(整型,浮点,字符或其他)。与 print() 不同的是,type() 不会把结果直接显示到屏幕上,它本身就像一个包含返回值的变量,可以嵌入程序中调用。
08. 算术运算
Python 支持基本的四则运算符:加+,减-,乘*,除/,运算符的优先级顺序也与日常计算相同:括号优先、乘除优于加减。
已有变量 nineteen=19, 请通过基本运算得到值 42,然后赋值予变量 forty_two;再由 forty_two 计算得到 420,并赋值予变量 four_hundred_twenty。
09. 类型转换
除了在定义变量时指定数据类型以外,Python 也提供灵活改变数据类型的函数。str() 将数值变量转换为字符,字符类型可以直接与其他文本连接或进行字符操作,但是就不能再参与算数计算了。float() 可以将字符变量转换为浮点数(前提是字符内容必须确实是数字),int() 函数可以将字符或浮点数转换为整数,对于浮点数,int() 相当于向下取整。
10. 类和对象
类(class)是具有相似属性的存在集合,对象(object)是类的实例。如果把哺乳动物看作一个类,它哺乳(这是关键属性,名称由来)、有脊椎、恒温等等,而一条狗就是哺乳动物的一个对象。而胎生就不是哺乳动物类的属性,因为鸭嘴兽是卵生。(注意不要脑补成呆呆兽)
在 Python 中,每个变量都是一个对象,它们都属于各自的数据类型。0和1都是整数类的对象,3.14是浮点数类的对象,“谈笑风生”是字符类的对象。
每个类都包含所有对象共有的属性,有些属性像函数一样可以完成特定功能,称为方法(method)。
11. 列表(List)
列表是一种数据结构的类,每个具体的列表都是一个对象。一个列表对象是由若干元素组成的集合,元素之间被逗号(,)分隔。比如一串数字[1,1,2,3,5,8],或者一系列字符["金坷垃","圣地亚哥","威廉伯爵","流失","蒸发"],当然也可以是由不同类型元素组成的混合列表。
应用中一般先定义一个空列表l = [],再调用列表类的.append()方法添加元素。调用方法的具体格式是对象 + . + 方法名:(
除了向空集中append元素,也可以在定义时直接指定列表所含的元素
12. 列表索引(index)
(Index Librorum Prohibitorum)
创建列表是为了在程序中使用,多数情况下我们需要的是列表中的某个元素而非整个集合,而指向某个特定元素就是通过索引(index)。
列表中的元素是有序的,第一个元素的索引为0,第二个索引为1,依次类推。
获取某个元素的方法是:在列表对象后面紧跟方括号([]),方括号内写有该元素的索引值。元素的索引可以是负数,此时表示倒序排列,如[-1]对应最后一个元素。
试从下面的列表中提取出第6个元素和倒数第4个元素,分别赋值予变量 the_sixth 和last_but_three。(
13. 列表切片
除了个别元素,有时我们也想要重点考察列表的一部分,或者整个列表非常大,同时操作太耗资源,这时就需要进行切片操作。对列表切片并获取其中一部分仍然是通过索引,但是加入了冒号(:)操作符来产生一个区间:切片索引[3:7]对应的是索引3到索引6(前闭后开)。len()函数可以返回列表的长度即元素个数。
对下面的列表进行切片,获取索引2至10(包含索引为10的元素)的列表,并命名为 second_tenth。然后将此列表的长度赋值予变量 length_2_10。
拓展阅读:
官方微博:@景略集智
微信公众号:jizhi-im
集智QQ群:557373801
商务合作:[email protected]
投稿转载:[email protected]