澳洲幸运10游戏群「python学

澳洲幸运10游戏群---123ayx.cn---- 003.数值类型 本系列文章是我个人学习《python学习手册(第五版)》的学习笔记,澳洲幸运彩骗局其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展。非商业用途转载请注明作者和出处;商业用途请联系本人(gaoyang1019@hotmail.com)获取许可。 「这不是演习!」 好了,从本章开始,我们就要正式进入python的学习.所涉及的内容深度会有所提升,但是还到不了学习完1 1=2之后就开始微积分推导的陡峭程度. 相关的补充内容我会以知识点补充或者外链的方式添加进来. 数值类型的基本知识 Python中的数值类型主要包括以下三类: **整数:**也就是我们所熟悉的int类型. 在python3之中,不再区分整数和长整数.也就是说允许整数具备无限的精度. 当然,这个精度取决于我们计算机的内存大小. 「浮点数:」 浮点数在标准的CPython中,采用的是C语言的双精度浮点数. 其精度和构建python解释器的C语言编译器的双精度一致.具体的精度信息可以在 sys.float_info中查看,如下图,详细解释请参考文档 「复数:」 复数由实部和虚部构成,字面量的写法可以写成 a bj的形式或者直接通过 complex(real,imag)来构建 In [2]: import sys# 双精度浮点数相关信息In [3]: sys.float_infoOut[3]: sys.float_info(max=1.7976931348623157e 308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)# 虚数的表示In [4]: cmplx=complex(1,2)In [5]: cmplxOut[5]: (1 2j)In [6]: type(cmplx)Out[6]: complex除了以上三种类型之外,python的数字类型还包括布尔类型. 各种进制的表示 python的整数默认采用十进制进行表示. 同样,也支持二进制,八进制,十六进制的表示. **二进制:**0b或者0B开头表示 **八进制:**0o或者0O开头表示(注意第二个字符是字母o) **十六进制:**0x或者0X开头表示 可以使用内置函数bin(I),oct(I),hex(I)来进行进制转换. 同时也支持int(str,base)将字符串转换为对应的十进制整数. In [12]: a=11In [13]: hex(a)Out[13]: '0xb'In [14]: oct(a)Out[14]: '0o13'In [15]: bin(a)Out[15]: '0b1011'# 将10按二进制转换为十进制In [18]: int('10',base=2)Out[18]: 2# 将16进制ff转换为十进制In [19]: int('ff',base=16)Out[19]: 255python的运算符 上表中基本把python中的运算符表达式全部列举出来了. 而且是按照运算优先级从低到高的顺序列举出来的. 对于混合类型的运算,永远向着精度更高的方向进行.当然也可以通过内置函数来进行强制类型转换 In [4]: 40 3.14Out[4]: 43.14In [5]: int(3.14)Out[5]: 3In [6]: float(5)Out[6]: 5.0python的数值比较 数值的比较会输出一个布尔值,比如: In [10]: 1<2Out[10]: TrueIn [11]: 2.0>3Out[11]: FalseIn [13]: 2.0!=2.0Out[13]: False看第三项可以知道,python是支持混合类型的数值比较的.如前面所说,python在进行混合类型的数值运算的时候,会先将其转换为精度更高的类型,然后再进行计算. 所谓链式比较如下例所示: In [16]: 1<2<3Out[16]: TrueIn [17]: 1==2<3Out[17]: False其中第一个等效于1<2 and 2<3,第二个等效于1==2 and 2<3 数值的比较是基于数值大小进行的,对于整型的比较是没问题的,但是对于浮点数的比较,就可能出现不可预知的错误. 比如以下的例子: In [14]: 1.1 2.2==3.3Out[14]: FalseIn [15]: 1.1 2.2Out[15]: 3.3000000000000003这个例子就有点让人匪夷所思了,1.1 2.2凭什么不等于3.3... 这是由于浮点数是有限的比特位数,导致无法精确的表示某些数值.这个问题不仅在python中存在,在其他语言中同样存在. 不过python有分数和小数,可以很好的规避这些问题. 毕竟python适合科学计算的特性不是白来的. python中的除法 python中有三种风格的除法和两种除法运算符. 「X/Y」 这个是所谓的经典除法和真除法.在python2中,对于整数而言,会省略小数的部分,对于浮点数则会保留小数部分. 在python3中,无论整数还是浮点数,真除法都会保留小数部分. In [18]: 4/2Out[18]: 2.0In [19]: 10/3Out[19]: 3.3333333333333335「X//Y」 向下取整除法,注意这个叫法,叫「向下」取整,也就是比真正结果小的那个最接近的整数. In [20]: 10//4Out[20]: 2In [21]: 10//3Out[21]: 3向下取整除法(floor division)和截断除法的区别: //操作符严格来说应该叫做向下取整除法,其获取的结果是「真正结果之下」的最接近的整数.这个对于正数来说比较好理解,舍弃小数的部分.对于负数而言,就是比其结果小的最接近的负数. In [25]: 10//4,10//-4Out[25]: (2, -3)In [26]: 10//9,10//-9Out[26]: (1, -2)通过这两个例子就可以很好的看出来了. 那么python中的截断,可以通过math模块中的trunc方法实现 In [28]: import mathIn [29]: math.floor(2.5)Out[29]: 2In [30]: math.floor(-2.5)Out[30]: -3In [31]: math.trunc(2.5)Out[31]: 2In [32]: math.trunc(-2.5)Out[32]: -2那对于所谓的截断除法,我们可以使用一种特殊的方式. In [33]: 5//-2Out[33]: -3In [34]: math.trunc(5/-2)Out[34]: -2按位操作 按位操作在处理网络数据包,串行程序等二进制数据的时候十分方便,所以python中如C语言一样,也支持位移操作. In [1]: x=1# 左移两位In [2]: x<<2Out[2]: 4# 按位或In [3]: x|2Out[3]: 3# 按位与In [4]: x

版权声明:e82ad76ed2a29d4a 发表于 2021-03-15 7:26:20。
转载请注明:澳洲幸运10游戏群「python学 | 澳洲幸运彩