3.python简介
下面的例子中,输入和输出分别由大于号和句号提示符(>>>和...)标注:如果想重现这些例子,就要在解释器的提示符后输入(提示符后面的)那些不包含提示符的代码行。需要注意的是在练习中遇到的从属提示符表示你需要在最后多输入一个空行,解释器才能知道这是一个多行命令的结束。
本手册中的很多示例--包括那些带有交互提示符的--都含有注释。Python中的注释以#字符起始,直至实际的行尾。注释可以从行首开始,也可以在空白或代码之后,但是不出现在字符串中。文本字符串中的#字符仅仅表示#。代码中的注释不会被python解释,录入示例的时候可以忽略它们。
如下示例:
3.1将python当作计算器
3.1.1数字
解释器表现的就像一个简单的计算器:可以向其录入一些表达式,它会给出返回值。表达式语法很直白:运算符+,-,*和/与其他语言一样(例如:Java/C);包括括号用于分组。
如下示例:
说明: Division always returns a floating point numbe
整数(例如3,4,30)的类型是int,带有小数部分的数字(例如5.0,1.6)的类型是float。在本教程的后面我们会看到更多关于数字类型的内容。
除法(/)永远返回一个浮点数。如要使用floor除法并且得到整数结果(丢掉任何小数部分),你可以使用//运算符;要计算余数你可以使用%
通过python,还可以使用**运算符计算幂乘方:
等号(‘=’)用于给变量赋值。赋值之后,在下一个提示符之前不会有任何结果显示:
说明:变量在使用前必须”定义”(赋值),否则会出错
整数和浮点数的混合运算中,整数会转换为浮点数
交互模式中,最近一个表达式的值给变量_。这样我们就可以把它当作一个桌面计算器,很方便的用于连续计算。此变量对于用户是只读的。不要尝试给它赋值--你只会创建一个独立的同名局部变量,它屏蔽了系统内置变量的魔术效果。
如下示例:
说明:round(number,ndigits=None)为python的内置函数,此函数有两个参数,第一个参数number是操作对象,ndigits是保留小数点后几位(默认是None=0)
除了int和float,python还支持其他数字类型,例如Decimal和Fractions,在用之前需要导入这些模块。Python还内建支持复数,使用后缀j或J表示虚数部分(例如 3+5j
3.1.2字符串
相比数值,python也提供了可以通过几种不同方式表示的字符串。它们可以用单引号(‘ ...’)或双引号(“...”)标识。\\可以用来转义引号
在交互式解释器中,输出的字符串会用引号引起来,特殊字符会用反斜杠转义。虽然可能和输入看上去不太一样,但是两个字符串是相等的。如果字符串中只有单引号而没有双引号,就用双引号引用,否则用单引号引用。Print()函数生成可读性更好的输出,它会省去引号并且打印转义后的特殊字符:
解决上面问题有三种方法:第一种是反斜杠对自身转义。第二种是使用原始字符串。第三种是使用斜杠
字符串文本能够分成多行。一种方法是使用三引号:”””...”””或者’’’...’’’。行尾换行符会被自动包含到字符串中,但是可以在行尾加上\\来避免这个行为
字符串也可以被截取(检索)。类似于C,字符串的第一个字符索引为0。Python没有单独的字符类型;一个字符就是一个简单的长度为1的字符串。索引也可以是负数,这将导致从左边开始计算。
如下示例:
说明:请注意-0实际上就是0,所以它不会导致从右边开始计算
除了索引,还支持切片。索引用于获得单个字符,切片让你获得一个子字符串。如果索引里面什么都没有,相当于字符串的复制
包含起始的字符,不包含末尾的字符,这使得favorite[:i]+favorite[i:]永远等于favorite
有个办法可以很容易记住切片的工作方式:切片时的索引是在两个字符之间。左边第一个字符的索引为0,而长度为n的字符串其最后一个字符的右界索引为n。
如下示例:
Python字符串不可以被更改--它们是不可变的。因此赋值给字符串索引的位置会导致错误:
说明:内置函数len()返回字符串长度
3.1.3列表
Python有几个复合数据类型,用于表示其它的值。最通用的是list(l列表),它可以写作中括号之间的一列逗号分隔的值。列表的元素不必是同一类型:
说明:不像不可变的字符串,列表是可变的,它允许修改元素
你可以使用三种方法在列表中添加元素:第一种是append(),第二种是extend(),第三种是insert()
3.2编程的第一步
当然我们可以使用python完成比二加二更复杂的任务。例如我们可以写一个生成斐波那契数列子序列的程序。
如下示例:
这个例子介绍了几个新功能:
第一行包括了一个多重赋值:变量a和b同时获得了新的值0和1最后一行又使用了一次。在这个演示中,变量赋值前,右边首先完成计算。右边的表达式从左到右计算
条件(这里是b<10)为true时,while循环执行。在Python中,类似于C,任何非零整数都是True:0是false。条件也可以是字符或列表,实际上可以是任何序列。所有长度不为零的是True,空序列是false,示例中的测试是一个简单的比较。标准比较操作符与C相同:< > == <= >= !=
循环体是缩进的:缩进是python组织语句的方法。Python不提供集成的行编辑功能,所以你要为每一个缩进行输入Tab或空格
关键字print()语句输出给定表达式的值。字符串打印是不用引号包围,每两个子项之间插入空间,所以你可以把格式弄得很漂亮
如下示例:
用一个逗号结尾就可以禁止输出换行:
补充:
因为**的优先级高于-,所以-3**2将接收为-(3**2)且结果为-9.