Python学习笔记_数字

Python学习笔记_数字

整形

布尔型

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

标准整形

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

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

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

长整形

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

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

双精度浮点型

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

Python中的浮点数栗子:0.03.14161.345e-12

复数

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

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

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

复数的内建特性

属性描述
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))

标准类型的操作符

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

算数操作符

单目运算符

运算符执行的操作
+正号
-负号

双目运算符

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

除法

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

除法类别除法效果
传统除法如果操作数是整形,那么就舍弃小数部分,返回一个整形;如果是操作数之一是浮点数,那么就执行真正的除法(保留小数部分)
真正的除法不管操作数是什么类型的,都执行真正的除法,但是需要导入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

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

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

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

内建函数与工厂函数

标准类型函数

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

数字类型函数

转换工厂函数

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

功能函数

函数功能
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()四舍五入

仅用于整形的函数

函数操作
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

随机数

随机函数产生的随机数
randint()两个整形参数,返回二者之间的随机整数
randrange()随机返回range([start],stop,[step])结果中的一项
uniform()randint()一样,不过返回的是二者之间的浮点型
random()类似于uniform() ,不过下限是0.0,上限是1.0
choice()返回给定序列的一个元素
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值