您的位置:首页 > 编程语言 > Python开发

Python学习笔记_数字

2015-07-20 00:00 585 查看
Python学习笔记_数字

整形
布尔型

标准整形

长整形

双精度浮点型

复数
复数的内建特性

操作符
混合模式操作符

标准类型的操作符

算数操作符
除法

位操作符只适用于整形

内建函数与工厂函数
标准类型函数

数字类型函数

其他数字类型
布尔数

十进制浮点数

随机数

Python学习笔记_数字

整形

布尔型

布尔型的取值范围只有两个值,
True
False


标准整形

Python的标准整形就好比是32位的
int
类型,和
C语言
没有什么两样

整形一般都是以十进制表示,但是有些写法缺不是以十进制表示的

[thead]
[/thead]
写法所表示进制栗子
以数字
0
开始
八进制数字010(十进制为8)
以字符
0x
开始
十六进制数字0x10(十进制为16)

长整形

Python里面的长整形不同于
C语言
里面的长整形,Python的长整形能表达的数值仅仅与机器支持的内存大小有关,可以很容易的表达一个很大的数

在一个整形值后面加上
L
,那么这个整形就是长整形,比如
1234567890L
,现在整形和长整形已经逐渐统一,用户将基本感觉不到两者的区别存在

双精度浮点型

Python的中的双精度浮点数有点类似于
C语言
中的
double
类型,但是二者还是有所不同,Python浮点数的实际今年度依赖于机器架构和创建Python解释器的编译器.

Python中的浮点数栗子:
0.0
3.1416
1.345e-12


复数

Python下面的复数是由两部分组成的,一个是
实部(real)
,一个是
虚部(imag)
,一个复数就表示为:
real+imagj


在Python中若要表示一个复数,就要遵循下面的约定:

虚数不能单独存在,他们总是和一个值为
0.0
的实部一起来构成一个复数

实数部分和虚数部分都是浮点型

复数的内建特性

[thead]
[/thead]
属性描述
num.real得到复数的实部
num.imag得到复数的虚部
num.conjugate()返回该复数的共轭复数

操作符

混合模式操作符

如果将两个不同类型的数字相加,那么就存在一个类型转换的问题,其转换规则如下:

如果一个操作数是复数,那么另外一个操作数转换为复数

否则,如果其中一操作数是浮点型,那么另外一个操作数被转换为浮点型

否则,如果有一个操作数为长整形,那么另外一个操作数被转换为长整形

否则,两者必然都是普通整形,无需类型转换

Python提供了
coerce()
内建函数帮助我们实现这种转换

举个栗子:

print coerce(1+1j , 1)                                                                                                              
print coerce(1.0, 1)                                                                                                                
print coerce(1+1j , 1.0)  

#运行结果
#((1+1j), (1+0j))
#(1.0, 1.0)
#((1+1j), (1+0j))


标准类型的操作符

当两个操作数是同一种数值类型的时候,此时就会用到类型对应的标准类型操作符

算数操作符

单目运算符

[thead]
[/thead]
运算符执行的操作
+正号
-负号
双目运算符

[thead]
[/thead]
运算符执行的操作
+加法
-减法
*乘法
/除法
%取余
**幂运算
//地板除

除法

在Python里面有三种的除法操作,他们分别是
传统除法
真正的除法
地板除


这三者的区别如下:

[thead]
[/thead]
除法类别除法效果
传统除法如果操作数是整形,那么就舍弃小数部分,返回一个整形;如果是操作数之一是浮点数,那么就执行真正的除法(保留小数部分)
真正的除法不管操作数是什么类型的,都执行真正的除法,但是需要导入
from __future__ import division
地板除不管操作数是什么累心赶得,操作都是向下取整
举个栗子:

传统除法栗子:

print 1/2                                                                                                                           
print -1/2                                                                                                                          
print 1.0/2                                                                                                                         
print -1.0/2  
#运行结果
#0
#-1
#0.5
#-0.5


真正除法栗子:

from __future__ import division                                                                                                         

print 1/2                                                                                                                               
print -1/2                                                                                                                              
print 1.0/2                                                                                                                             
print -1.0/2   
#运行结果
#0.5
#-0.5
#0.5
#-0.5


地板除栗子:

print 1//2                                                                                                                              
print -1//2                                                                                                                             
print 1.0//2                                                                                                                            
print -1.0//2    
#运行结果
#0
#-1
#0.0
#-1.0


传统除法和地板除的最大区别在于负数,传统除法是直接舍弃小数部分,地板除是向下取整。

位操作符(只适用于整形)

[thead]
[/thead]
位操作符功能
~num对每一位取反
num1 << num2num1 左移 num2 位
num1 >> num2num1 右移 num2 位
num1 & num2num1 与 num2按位与
num1 | num2num1 与 num2按位或
num1 ^ num2num1 异或 num2

内建函数与工厂函数

标准类型函数

有三个标准类型的函数:
cmp()
,
str()
,
type()


数字类型函数

转换工厂函数

[thead]
[/thead]
工厂函数操作
bool(obj)返回对象的bool值
int(obj , base=10)返回一个字符串或者数值对象的整形表示
long(obj , base=10)返回一个字符串或者数据类型的长整表示
float(obj)返回一个字符串或者数据类型的浮点数表示
complex(str)或者complex(real,imag=0.0)返回一个字符串的复数表示,或者根据给定的实数返回一个复数
功能函数

[thead]
[/thead]
函数功能
abs(num)返回num的绝对值
coerce(num1,num2)将num1和num2转换为同一类型,然后以一个元组的形式返回
divmod(num1,num2)返回一个元组(num1/num2 , num1%num2)
pow(num1,num2,mod=1)取num1的num2次方,如果提供mod参数,那么结果再对mod进行取余运算
round(flt,ndig=1)接受一个浮点型flt进行四舍五入,保存ndig小数
这里要讲三个函数的区别,
int()
,
round()
,
math.floor()
,下面列出其不同之处:

函数
int()
直接截去小数部分

函数
floor()
向下取整

函数
round()
四舍五入

仅用于整形的函数

[thead]
[/thead]
函数操作
hex(num)将数字转换为十六进制数并以字符串形式返回
oct(num)将数字转换为八进制并以字符串返回
chr(num)
ASCII
值的数字转化为
ASCII
字符
ord(num)接受一个
ASCII
或者
Unicode
(长度为1),返回相应的
ASCII
值或者
Unicode
unichr(num)接受
Unicode
码值,返回对应的
Unicode
字符

其他数字类型

布尔数

布尔数主要有下面几个值得注意的地方:

布尔型是整形的子类,但是不能再被继承

没有
__nonzero__()
方法的对象默认值是
True


如果要定义一个心新类,并且想要根据根据对象的数据来决定对应的布尔值,那么就要定义
__nonzero__()
方法

class C:
    def __nonzero__(self):
        # do some thing
        return false


十进制浮点数

如果想要使用十进制浮点型,那么就要导入
decimal
模板以便使用
Decimal
类,注意不能混用十进制浮点型和普通浮点型

dec = Decimal(.1)#error
dec = Decimal(".1")#ok
dec +  0.1 #error
dec + Decimal("1.0")#ok


随机数

[thead]
[/thead]
随机函数产生的随机数
randint()两个整形参数,返回二者之间的随机整数
randrange()随机返回
range([start],stop,[step])
结果中的一项
uniform()
randint()
一样,不过返回的是二者之间的浮点型
random()类似于
uniform()
,不过下限是
0.0
,上限是
1.0
choice()返回给定序列的一个元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: