# coding=utf-8

#abs() 函数:返回数字的绝对值。
print abs(-45) #45
print abs(100.12) #100.12
print abs(119L) #119

#特例:复数:返回 (a^2+b^2) 开根
print abs(1+2j) #2.23606797749979
print abs(1+1j) #1.4142135623730951
print abs(1j) #1.0

#知识引申:复数定义
#复数是由一个实数和一个虚数组合构成,表示为:x+yj
#一个复数时一对有序浮点数 (x,y),其中 x 是实数部分,y 是虚数部分。
#1、虚数不能单独存在,它们总是和一个值为 0.0 的实数部分一起构成一个复数
#2、复数由实数部分和虚数部分构成
#3、表示虚数的语法:real+imagej
#4、实数部分和虚数部分都是浮点数
#5、虚数部分必须有后缀j或J
aa = 123-12j
print aa.real  # output 实数部分 123.0  
print aa.imag  # output虚数部分 -12.0

#divmod() 函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a / b, a % b)
print divmod(7, 2) #(3, 1)
print divmod(8, 2) #(4, 0) 
print divmod(1+2j,1+0.5j) #((1+0j), 1.5j)


#all() 函数:用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。
#any() 函数:用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。
#元素除了是 0、空、None、False 外都算 True。
#空元组、空列表返回值为True
print all(['a', 'b', 'c', 'd'])  # 列表list,元素都不为空或0 True
print any(['a', 'b', 'c', 'd'])  # 列表list,元素都不为空或0 True

print all(['a', 'b', '', 'd'])   # 列表list,存在一个为空的元素 False
print any(['a', 'b', '', 'd'])   # 列表list,存在一个为空的元素 True

print all([0, 1, 2, 3])          # 列表list,存在一个为0的元素 False
print any([0, 1, 2, 3])          # 列表list,存在一个为0的元素 True

print all(('a', 'b', 'c', 'd'))  # 元组tuple,元素都不为空或0 True
print any(('a', 'b', 'c', 'd'))  # 元组tuple,元素都不为空或0 True

print all(('a', 'b', '', 'd'))   # 元组tuple,存在一个为空的元素 False
print any(('a', 'b', '', 'd'))   # 元组tuple,存在一个为空的元素 True

print any([0, '', False])        # 元素全为0,'',false

print all([])             # 空列表 True
print any([])             # 空列表 False

print all(())             # 空元组 True
print any(())             # 空元组 False


#enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons, start=1))     # 下标从 1 开始 [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
	print i, element
#0 one
#1 two
#2 three

#isinstance() 函数:判断一个对象是否是一个已知的类型,类似 type()。
#类型汇总:int,float,bool,complex,str(字符串),list,dict(字典),set,tuple
a = 2
print isinstance (a,int) #True
print isinstance (a,str) #False
print isinstance (a,(str,int,list))   # 是元组中的一个返回 True

#pow() 函数:返回 xy(x的y次方)的值;如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z
#pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。
#pow(x,y) 等价于 x**y:
#pow(x,y,z) 当 z 这个参数不存在时 x,y 不限制是否为 float 类型, 而当使用第三个参数的时候要保证前两个参数只能为整数。
import math   # 导入 math 模块

print math.pow(100, 2)  	#10000.0
print pow(100, 2) 			#10000
print math.pow(100, -2)		#0.0001
print math.pow(2, 4)		#16.0
print math.pow(3, 0)		#1.0

print 4**2					#16 = 4*4
print 4**2.5 				#32.0 = (4*4)*2 = 32
print 4**2.5%3				#2.0 = 32%3 = 2
print pow(4,2,3)			#1 = 4*4%3 = 1

#sum() 方法对系列进行求和计算;如果有第二个参数,表示对计算的结果加上这个参数
print sum([0,1,2,3,4], 2)	#12

#execfile() 执行某个文件,参数为filename:文件名
execfile('demo.py');