python学习笔记(1)

python学习笔记基础篇

数据类型

一、整数

Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。

二、浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x10^9和12.3x10^8是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

在C/C++语言对于整形数执行除法会进行地板除(舍去小数部分)。例如 int a=15/10; a的结果为1。

同样的在Java中也是如此,所以两个int型的数据相除需要返回一个浮点型数据的时候就需要强制类型转换,例如 float a = (float)b/c ,其中b、c都是int型数据。

Python中分为3种除法:传统除法、精确除法、地板除。

传统除法

如果是整数除法则执行地板除,如果是浮点数除法则执行精确除法。

1
2
3
4
>>>1/2
0
>>>1.0/2.0
0.5

精确除法

除法总是会返回真实的商,不管操作数是整形还是浮点型。执行from future import division 指令就可以做到这一点。

1
2
3
4
5
>>>from __future__ import division
>>>1/2
0.5
>>>1.0/2.0
0.5

地板除

从Python2.2开始,增加了一个操作符 // ,以执行地板除://除法不管操作数为何种数值类型,总是会舍去小数部分,返回数字序列中比真正的商小的最接近的数字。

1
2
3
4
5
6
>>>1//2
0
>>>1.0//2
0
>>>-1//2.0
-1

内建函数divmod()

divmod (a,b),返回(a//b,a%b)

1
2
3
4
5
6
7
8
9
10
>>>divmod(1,2)
(0,1)
>>>divmod(3.14159,1.5)
(2.0,0.4159000000000002)
>>>(5+6j)//(3+2j)
2+0j
>>>(5+6j)%(3+2j)
-1+2j
>>>divmod(5+6j,3+2j)
((2+0j),(-1+2j))