Python数据类型(一):数值布尔类型

来源:互联网 发布:网络新兴职业 编辑:程序博客网 时间:2024/06/10 01:22

Python简介

Python虽然是一个脚本语言,但也是一个完全面向对象的语言.由于它设计之初把易用性做为非常重要的一个考量标准,所以用起来非常简洁,优美.

C++是静态强类型语言,而Python是动态强类型语言.由于是动态语言,所以变量的类型不是用关键字显式指定,而是在运行时根据赋给它的值动态判断出来的.

另外Python也跟C++一样同时支持结构化编程和面向对象编程两种范式.


学一门新语言按江湖传统一般要先整个hello world出来.

在Python 2.7及以下版本是这样print "hello world"但在Python 3.3中是这样print("hello world") 然后保存成hello.py文件中.如果在linux中在命令行直接敲python /home/arwen/hello.py 就行了.Linux一般都有自带了Python的解释器.在windows上有个集成开发环境IDLE,打开源文件后按F5就可以运行了.

python 3.3没有向后兼容低版本的语言,觉得这是个问题.


基本数据类型

如果按我们的常规思维,一个程序语言中一般会有跟数值,字符串,布尔类型相关的类型.Python中也同样有这三种类型.

1、数值类型


1.1、整型

python不像C++,整型还分short ,int ,long 。对用户来讲python里面只有一种整型。那你可能会问python整型可以表示多大范围的值,跟C++里的long、long long是一样?你可以先弄了例子试下
>>> large_num = 2**1000>>> print large_num10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
你会惊讶的发现,竟然输出了正确的结果,在C++中这么大的数肯定是溢出了。
实际上python因为是个脚本语言,它的类型实现方式比较灵活,跟C++等常用语言不一样。
如果你的整数不大时python会用机器整数表示也就是32位或64位,如果是大整数就用内部模拟(具体怎么模拟还没搞清楚,还有待研究),理论上精度无限,永远不用考虑值溢出的问题

整型的八进制、十六进制

一般我们都用十进制来表示整型数值,有些特殊情况你可能也会用八进制、十六进制。

>>> eight_val = 011        #数字0开头>>> sixteen_val = 0x11  #数字0加字母x开头>>> print eight_val , sixteen_val9 17


1.2、浮点类型


C++的浮点有float , double,python也是只一种。

浮点数相等判断

例子1:

>>> one = 10.05 + 0.05>>> two = 10.00 + 0.1>>> print one, two10.1 10.1>>> print one == twoFalse

例子2:

>>> one = 1.05 + 0.05>>> two = 1.00 + 0.1>>> print one, two1.1 1.1>>> print one == twoTrue

看到这两个例子你肯定会想不通,完全一样的结构,只是变量值变动了下,但结果却不同。原因是浮点数在机器上的表示比较复杂跟整型很不一样,上面的例子应该是浮点在内存中存储的时候有空位补齐导致的。

但是我们也不用纠结这个,实际上在所有编程语言中都有浮点数相等判断的问题,所以一般都是要避免对浮点做相等判断,推荐的方法都两数相减去然会跟一个比较小的数对比。

比如  if  one - two < 0.000000001 就认为one = two


浮点数截断

有时浮点数太长,我们可能希望截断。一般有2大种截断需求:只保留整数、保留指定位数的小数。


只保留整数

只保留整数小数全部舍弃

>>> print int(3.8), int(3.1)3 3

保留整数并且四舍五入

>>> print round(3.8), round(3.1)4.0 3.0

保留整数向上取整

>>> import math>>> print math.ceil(3.8), math.ceil(3.1)4.0 4.0

保留整数向下取整

>>> import math>>> print math.floor(3.8), math.floor(3.1)3.0 3.0

保留小数

指定小数位数四舍五入

>>> print round(3.11, 1) , round(3.18, 1)3.1 3.2

指定小数2位向下取整

>>> import math>>> num = 3.1415>>> num = num*100>>> print math.floor(num)/1003.14

指定小数2位向上取整

>>> import math>>> num = 3.1415>>> num = num*100>>> print math.ceil(num)/1003.15

1.3、复数

python里面还有个比较少见的复数类型,一般只有些专业的数学计算里才用到

>>> one = 3 +  4j>>> two = 4 + 5j>>> print one*two (-8+31j)

2、布尔类型

python的布尔类型跟C++基本一样.不过首字母大写True,False其中True是数值1,False是数值0.然后也是所有非0值都当True处理.

不过还有些跟C++不一样的地方,就是空字符串,None,空列表、空元组、空字典也都当False处理。

python里面的与或没有用&&、||、~这样的字符表示,而是用英文and 、or、not表示,比如

print True + 1print False + 1if '' or None or [] or () or {}:    print 'check True'else:    print 'check False'if (not '') and (not None) and (not []) and (not ()) and (not {}):    print 'check True'else:    print 'check False'#结果21check Falsecheck True
1 0
原创粉丝点击