数字包括 int() , long() , float() , complex() ,这些函数都能够用来进行数值类型的转换。同时这些函数也接受字符串参数,返回字符串所表示的数值。另外int()和long()在转换字符串的时候,还能接受一个进制参数,但如果是数字之间的类型转换,该参数不可用。 后来python又引入了新的函数 bool() ,用来将整数值1和0转换成标准布尔值 True 和 False。
在2.7中,能够将几乎所有的数据类型都转换为布尔值表示。其布尔值的的转换关系参照我在布尔值篇的说明。 python在2.2中对类型和类进行了整合,以上所有的内建函数都转变成工厂函数。所谓的工厂函数就是值这些函数都是类对象,而调用它们的时候,都得到一个类的实例。 但是在使用上和函数也没什么区别。 1. bool(obj) 返回obj对象的布尔值,也就是 obj.__nonzero__()方法的返回值。没有__nonzero__()方法的对象的默认值是 True。 class Text(): " 自定义布尔值测试类 " def __init__(self,value): self.value = value def __nonzero__(self): return False a = Text(123) #实例化 print bool(a) #判断该实例的布尔值
2. int(obj, base=10) 返回一个字符串或数值对象的整数表示。但参数为字符串的时候,可以使用base指定进制,默认是10进制,当obj为数字的时候,即数字间进行类型转换的时候,该参数不可用。
非数字字符串报错。
3. long(obj, base=10) 返回一个字符或数据对象的长整数表示。其他同上。
其他部分不演示了。
非数字字符串报错。
4. float(obj) 返回一个字符串或数据对象的浮点数表示。没有进制参数可选。
其他部分不演示了。
非数字字符串报错。
5. complex(str) / complex(real[, imag=0]) 返回一个字符串的复数表示,或者根据给定的实数(real)及一个可选的虚数部分(imag)生成一个复数对象。
其他部分不演示了。
非数字字符串报错。
内置功能函数: 1. abs(num) num表示参数必须是个数字,下面不再重复说明。 abs()返回给定参数的绝对值。如果参数是一个复数, 那么就返回 math.sqrt(num.real2 + num.imag2)。
2. coerce(num1, num2) 将num1和num2转换为同一类型,然后以一个 元组的形式返回。 转换规则: 1.如果有一个操作数是复数, 另一个操作数被转换为复数。 2.否则,如果有一个操作数是浮点数, 另一个操作数被转换为浮点数。 3.否则, 如果有一个操作数是长整数,则另一个操作数被转换为长整数。 4.否则,两者必然都是普通整数,无须类型转换。 优先级:复数 > 浮点数 > 长整形 > 整数
3. divmod(num1, num2)
除法-取余运算的结合。返回一个元组(num1 / num2, num1 % num2)。对浮点数和复数的商进行下舍入(复数仅取实数部分的商)
4. pow(num1, num2, mod=1) 取 num1 的 num2 次方,如果提供 mod 参数,则计算结果再对 mod 进行取余运算 。
5. round(flt, ndig=0) 接受一个浮点数 flt 并对其四舍五入,保存 ndig 位小数。 若不提供 ndig 参数,则默认小数点后0位。(整数也可以,不过并没有什么实际意义)
注意 int(), round(), math.floor(),这几个函数的区别: 1.函数 int()直接截去小数部分。(返回值为整数) 2.函数 floor()得到接近原数但小于原数的整数。(返回值为浮点数) 3.函数 round()得到接近原数的整数。(返回值为浮点数)
仅用于整数的函数: 除了适应于所有数值类型的内建函数之外,Python 还提供一些仅适用于整数的内建函数(标准整数和长整数)。 这些函数分为两类,一类用于进制转换,另一类用于 ASCII 转换。 1.进制转换函数 oct(num) 将一个整数(任何规模的)转换成一个八进制字符串。其结果是一个有效的Python表达式。
hex(num) 将一个整数(任何规模的)转换成一个小写十六进制字符串,前缀与'0x'。
2.ASCII 转换函数 Python 也提供了 ASCII(美国标准信息交换码)码与其序列值之间的转换函数。每个字符对应一个唯一的整数(0-255)。对所有使用 ASCII 表的计算机来说,这个数值是不变的。这保证了不同系统之间程序行为的一致性。 chr(num) 函数接受一个单字节整数值,返回一个字符串,其值为对应的字符。
ord(chr) 接受一个字符,返回其对应的整数值。是上面方法的逆运算。
unichr(num) 接受Unicode码值,返回 其对应的Unicode字符。所接受的码值范围依赖于你的Python是构建于UCS‐2还是UCS‐4。
随机数的实现: 随机数的实现需要依靠 random 模块。 该模块包含多个伪随机数发生器,它们均以当前的时间戳为随机数种子。这样只要载入这个模块就能随时开始工作。下面列出了该模块中常用的函数: random.randrange() 它接受和 range() 函数一样的参数, 随机返回 range([start,]stop[,step]) 结果的一项。 import random print random.randrange(10) print random.randrange(10) print random.randrange(1, 10, 2) print random.randrange(1, 10, 2)
random.uniform(a, b) 几乎和 randint(a, b)一样,不过它返回的是二者之间的一个浮点数(不包括范围上限)。 import random print random.randint(1,10) print random.randint(1,10) print random.uniform(1,10) print random.uniform(0.1,0.9)
random.random() 类似uniform() 只不过下限恒等于 0.0,上限恒等于 1.0。
random.choice(seq) 随机返回给定序列的一个元素。 import random a = [1, 2, 3] print random.choice(a) print random.choice(a) print random.choice(a)
其他数学类型相关模块: decimal 十进制浮点运算类 Decimal array 高效数值数组(字符,整数,浮点数等等)
math/cmath 标准C库数学运算函数。常规数学运算在match模块, 复数运算在cmath模块 …… 感兴趣的自行了解 (责任编辑:最模板) |