猥琐男学python 第二课

来源:互联网 时间:1970-01-01

这一次,来说一下python的基本语法之类的东西,先让大家有一个具体的印象,这次讲到的内容,您不必要深究,因为这些知识以后的学习中会来详细讲解,这次的目的是让您可以大体感受一下python的语法。

2.1 先来谈谈print语句

开始之前还是按照之前的方式进入python的命令行,然后试试下面这个语句:

要注意的是这里print是一个语句,并不是函数,在linux下面很多都是通过语句来输出字符的,比如shell中用echo来输出,昨天讲的echo $PATH就是。

上面这2个输出语句的区别是,用字符变量直接输出的时候输出结果加了一个引号,表示这个变量是字符串变量,而用print输出,只是表示这个对象的的字符串表示,所以没有加引号,类似C#语言中的ToString()一样,这是有区别的。(其实一个用的str(),一个是rep()r,以后您会慢慢了解)

如果您要重复执行上一条语句直接用下划线就可以了

来看下面这个例子,讲的是格式化输出结果:其实和C语言的很类似,%d是输出10进制,%s是输出字符串,之前有讲过因为python很灵活,所以您这里完全可以将一个数字给%s的占位符号。

同时您可以将输出定位到设备或者文件中:很好很强大。

2.2 说完输出,那必须要说输入啊

直接看下面这段代码,很清晰,很明白

注意输入的age会被转换成字符串,所以在输出的时候您需要用%s来指定占位符号,或者您也可以这样: print 'your name is %s,and %d years old' % (name,int(age));来做强制转换。

2.3 再来说说注释

在python中,用#来注释一行

还有一种叫文档注释,和C#中的///类似,用来生成文档的,用在模块。类, 函数的前面,起到文档说明的功能。

Def foo()"这是文档注释"
 Return true

2.4 操作符

基本的操作符号:+,-,*,/,//,%,**,需要注意的是双斜杠也是除法,不过与单斜杠不同的是,它的除法是浮点除,结果会进行舍入操作,传统除法是地板除,直接截断小数点后面的数字。**这个是乘方。不过猥琐男这里双斜杠好像也不是4舍5入的,这个问题以后在研究吧,现在只是初略的了解一下。

比较操作符号:<,>,<=,>=,==,!=,<>,!=和<>是一样的东西,推荐使用!=这种格式。逻辑操作  and, or, not。这几个操作符号,有程序基础的同学都明白,不用我多说了。还有您可以认为操作符号优先级是浮云,任何时候用括号就好了。

2.5 变量和赋值

python是不需要变量声明的,赋值和声明同时完成,变量名称规则和c语言一样,下划线或者字母开头,其他您不要用一些特殊符号就行了,数字字母下划线对于您命名变量来说够了,还有非常重要的一点就是python是大小写敏感的,Myname和myname不是同一个变量。python支持增量赋值比如 a=a+5就相当于a+=5;

2.6 关于数字

先参见这个表格:这些类型您应该一看就明白了。


需要注意的是python中的长整型和一般的长整型不同,基本上可以是无限长度,取决于您计算机的虚拟内存的总数。其长度当然的远远超过了C中的长整型的定义。

2.7 关于字符串

可以用单引号和双引号括起来表示一个字符串,同时还有一种3个单引号的方式表示特殊的字符串,用索引[]和切片[:]方式可以访问其中特定的字符串,+用来做字符串连接,*表示重复多少次。在这里,您只需要看的懂下面的代码就行了:同样这里[]索引是从0开始的,注意这一点。注意切片[2:6]表示从2到6的位置的值。

2.8 列表和元组

类似C#中的数组和集合类型,值得注意的是,列表和元组中存储的数据类型可以是不同的,索引从0开始到length-1,列表中的元素可以添加和删除可以更改,但是元组不行,可以看成是只读的列表。列表用[]来包裹,元组用();下面例子您看的懂就行了,同样支持索引和切片操作。

列表的例子:


元组的例子:

2.9 字典

由键值对构成的数据结构,key必须是可以进行hash运算的对象,基本上所有的python都可以用作键,所有的类型都可以用做值。一般您用字符或者数字做key那就没错了。字典用大括号{}包含,看下面的例子就行了。

2.10 代码块和缩进

这个很重要,python中是没有大括号用作代码块包围的,那么要用代码块的时候该怎么办呢?比如类是
If(){
代码快
}
这样的情况,又没有大括号,怎么办呢?答案就是用代码缩进,您可能刚开始不熟悉,但以后您会发现这样是有好处的,就上面那个例子,你可以这样写:
If():
 代码块
缩进一般是4个空格,但您可以随意指定也没关系。注意的是,块之前的语句加上冒号::::

2.11 if语句

If expression1:
 #do some things
 #do some things
 
elif expression2:
 #dosome thinds
 #do some things
else:
 #dosome thinds
这个真没什么好说的,注意是elif 不是else if就行了。

2.12 while循环

这个没什么好说的,看个例子ok了

2.13 for 和range()函数

python中的for其实像一般语言中的foreach一样。看下面的例子:

注意在print最后加上逗号会使输出结果显示在一行,而且自动加上空格,否则会是分行打印。

因为python中的for的这个特性,它是类是于foreach的功能,那么蛋疼的事情出现了,那我们要做传统的for循环,那要如何?比如C中的
for(int i=0;i++,i<10)
该怎么办?于是range()函数出现了,直接上例子吧:


把他变成C语言格式就好理解了:range(N),实际上生成一个检索列表,剩下的您自己回味一下。
For(int i=0,i<len(str),i++){printf("%d %s",I,str[i]);}

2.14 列表解析:

这个实在没办法用语言来表达清楚,反正既然是列表解析,肯定是和列表这种数据类型有关,先看一个例子:

总之,您可以理解为他这个东西可以把一个表达式"X**2 for x in range(4)"解析成一个列表[0,1,4,9]。这个例子还是简单的,下面来一个更强大的列表解析:

可以看出列表解析的强大了吧。。。只要是偶数,和2取模后为0表示false,在加个not就是返回全部的偶数,然后2次方。生成列表。
我个人对这个列表解析的理解是,既然咱们要用for来循环一个列表做操作,咱们反向推理,那必须也有一个方法,用来操作一个表达试来生成一个列表,这个是一正一反的关系。不知道这样理解可以么?

2.15 文件内建函数

用来操作文件的函数,给个例子先看看就可以了,这个以后会讲到:

open函数的第二个参数表示只读取文件,另外还有w表示写,a表示添加,b表示2进制访问,如果没有提供这个参数,默认是读取。用完记得close掉。不然句柄始终不释放。那么就会出现这种情况:

注意这里print我们后面已经加了“,”但是为什么不是在一行上输出呢,那是因为文件中的每一行自带了换行,输出的时候自动输出上去了。理解一下。

2.16 错误和异常处理

这个对大家来讲应该不陌生:就是用try包含要执行的代码,用except来捕获异常(如果有),然后在except子句中做处理。

2.17 函数

这个地球人都知道,但是python中的定义方式您需要了解一下,看下面的例子您就明白了:

怎么样,不难理解吧这个。

那么怎么样给函数默认参数呢?看下面的例子您就明白了。

2.18 导入模块

简单这个用import 语句就可以了,一旦您导入一个类库,您就可以使用库中提供的方法函数,看例子:

注意您需要在函数前面加上模块名称sys。

2.19 最后给您介绍一些使用的函数作为本节的结束

dir(obj)显示对象的属性:


help(obj)显示文档字符串


int(obj),强制转换
len(obj),返回对象长度
open(fn,mode),开文件
range([[start,]stop[,step]] 返回一个整数列表,开始结束和步进

type(obj),返回对象类型

raw_input(str),等待输入
str(obj),将一个对象转化为字符串

本来想说说对象和类,但是在这一次的简要介绍中说感觉没必要,等到专门介绍面向对象编程时再来将类和对象】

这次就先到这里吧,下次再见吧。


相关阅读:
Top