一年前读《集体智慧编程》这本书的时候用到过python,那个时候并没有详细去学习,只是粗略地过了一遍,基本已经忘光了,现在准备重新捡起来,并记录整个学习过程,供以后进行参考。
(提示:本系列文章是以一个已学过别的语言的学习者的视角来学习python,因此许多编程的基础内容并不会提到,详细内容请参考文末资料,但是尽量会说人话,以便以后的自己(也包括读者)进行理解,争取做到即使失忆也能通过看这些文章快速学起来。)
明确需求:(为什么使用这个语言?)想学会一门可以快速开发出想要的功能的语言,python满足这个需求。
与已学的语言的区别:C/C++通常开发效率较低,运行效率相对较高,是编译性语言。python开发较快,是解释性语言。
如果学过别的语言,学起来应该是比较快的,学习就是把新的知识与已有的认知建立起联系的过程,只需要了解清楚语法,就可以写一些基本的程序。但是如果与之前学习的语言区别较大,就不能一味的通过建立联系的方法来学,因为不同的语言(尤其是像C++和Python这样)其编程思想都会有一定的差异。所以第一步是掌握基本语法,然后再通过接触不同的项目以及阅读源码来大量实践以体会其思想。
如果没有学过编程,那么体会编程的思想就要占先,如何体会?只有通过实践,每一行代码都要亲自手敲,理解每一句,搞清楚是在做什么。日积月累,没有速成。
python 2.7
Windows7系统
现在从零开始学起python。
1.输入和输出
大部分编程语言都喜欢用helloworld作为第一个程序,事实上输出确实是最重要的一个交互,因为只有这样才能知道程序当前的状态。打开命令行进入python或者在python的IDE中写下:
print 'helloworld'
再运行即可得到结果。
只有输出并不够,这样只得到了程序的信息,它没有得到用户的信息,因此还需要输入:
i = raw_input()
print i
使用raw_input()这个函数可以让程序得到用户的输入,如何检查输入是否正确?那就需要再把它输出出来让用户查看。信息的流动是这样的:用户->程序->用户,用户有大脑细胞存贮这个信息,程序也需要类似的“大脑细胞”,这就是变量。
2. 变量
如上程序中的i就是一个变量,变量可以存储信息,如上程序中的输入就被存储在名为i的变量中。
变量除了使用输入的方法赋予值,还可以直接赋值:
r = 2
pi = 3.14
c = 'Perimeter'
注意到r、pi都是数字,而c是一个单词,称作字符串。他们是“不同”的,这就是数据的类型问题。
3.数据类型
python是一个动态语言,其变量的数据类型并不是像c++那种一成不变的。一个变量可以赋值为数字,也可以赋值为字符。具体的数据类型在应用到的时候再具体了解。要注意,虽然变量类型是动态的,但是作用在变量上的操作类型是不能随意改变的。“操作”,即运算。
4.对变量的运算
我们所熟悉的运算即数学上的加减乘除,这是只能作用在数值上的运算,如果用加减乘除去操作字符串将会得到未知结果。
r = 2
pi = 3.14
c = 'Perimeter'
p = pi*r*r
print c+p #错误
变量的类型并不止数值类,还有很多很多类别,要对这些类型的变量进行“运算”,需要使用能对其进行操作的函数。
5.函数
学过数学的都知道函数是什么,计算机程序中的函数和数学上的函数有一定的相似。简单概括说,函数是对一组操作进行抽象的符号。如上面程序中计算圆面积的公式pi*r*r,如果用一个符号来抽象为Sc(r),它代表运算:pi*r*r。
python中定义函数的方法是:
def Sc(r):
pi = 3.14
return pi*r*r
其中,r是传入的参数,代表圆半径,return 后面的为这个函数运算得到的值。这和数学上的函数几乎一样:输入参数、得到结果。只是计算机中的函数可以选择没有参数,以及没有返回值,可以只是单纯的一组操作过程。
使用函数的方法:
print Sc(2)
注意:要先定义再使用。
python有很多内置的函数,可以实现许多功能。比如一个操作字符串的函数:
strip():功能:删除字符串s开头的所有空白符(包括\t\r)(这个函数还有别的功能 自查自试)
s = ' ssd dd'
s.strip()
此外,许多公司也推出了大量的python库,许多功能无需从零编写,直接借用函数库即可。
总结:
第一篇中提了许多非常基本的也是非常常用的内容,虽然这些内容几乎是所有语言的共通内容,完全不需要这么多篇幅,但出于对自己理解的试探,还是把每个部分都写下来了。另外,本文的结构将会与我所看的教程有所不同,因为完全是按照自己的理解思路来写的。
从下一篇将会开始Python的独特内容,每天学习1小时,积累到有货了再记录下来成文。
参考资料:廖雪峰python教程:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000