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、整型
>>> large_num = 2**1000
>>> print large_num
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
整型的八进制、十六进制
一般我们都用十进制来表示整型数值,有些特殊情况你可能也会用八进制、十六进制。
>>> eight_val = 011 #数字0开头
>>> sixteen_val = 0x11 #数字0加字母x开头
>>> print eight_val , sixteen_val
9 17
1.2、浮点类型
C++的浮点有float , double,python也是只一种。
浮点数相等判断
例子1:
>>> one = 10.05 + 0.05
>>> two = 10.00 + 0.1
>>> print one, two
10.1 10.1
>>> print one == two
False
例子2:
>>> one = 1.05 + 0.05
>>> two = 1.00 + 0.1
>>> print one, two
1.1 1.1
>>> print one == two
True
看到这两个例子你肯定会想不通,完全一样的结构,只是变量值变动了下,但结果却不同。原因是浮点数在机器上的表示比较复杂跟整型很不一样,上面的例子应该是浮点在内存中存储的时候有空位补齐导致的。
但是我们也不用纠结这个,实际上在所有编程语言中都有浮点数相等判断的问题,所以一般都是要避免对浮点做相等判断,推荐的方法都两数相减去然会跟一个比较小的数对比。
比如 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)/100
3.14
指定小数2位向上取整
>>> import math
>>> num = 3.1415
>>> num = num*100
>>> print math.ceil(num)/100
3.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 + 1
print False + 1
if '' 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'
#结果
2
1
check False
check True