Python_05_数字

Python 数字

Python 数字数据类型用于存储数值

数字类型是不允许改变的,这就意味着如果改变数字数据类型的,将重新分配内存空间

以下实例在变量赋值时, 数字对象将被创建:

age_1 = 13
age_2 = 14

您也可以使用del语句 删除 一些数字对象引用

del语句的语法是:

del var1[,var2[,var3[....,varN]]]]

通过使用del语句,可以 删除 单个或多个对象,例如:

del var
del var_1, var_2

Python 支持四种不同的数值类型:

  • 整型(Int) – 通常被称为是整型或整数,是正或负整数,不带小数点
  • 长整型(long integers) – 大整数,整数最后是一个大写或小写的L
  • 浮点型(floating point real values) – 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(5.2e2 = 5.2 x 102 = 520,谐音:我愛妳)
  • 复数( (complex numbers)) – 复数的虚部以字母 J 或 j 结尾 。如:6+7i
int long float complex
13 51924361L 0.0 3.14j
520 -0x19323L 15.20 45.j
-486 0122L -21.9 9.322e-36j
080 32.3+e18 .876j
-0140 -90.
-0x267 -32.54e100 3e+26J
0x67 70.2-E12 4.53e-7j
  • 长整型也可以使用小写”L”,但是还是建议您使用大写”L”,避免与数字”1″混淆。Python使用“L”来显示长整型
  • Python还支持复数,复数由实数部分虚数部分构成,可以用 a + bj ,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型

Python数字类型转换

转换函数 含义
int(x [,base ]) 将base进制表示的x字符串,转换为一个整数,例如: int(“0xff”,16), 返回: 255
long(x [,base ]) 将base进制表示的x字符串,转换为一个长整数,例如: long(“0103”,8), 返回: 67L
float(x ) 将x转换到一个浮点数,例如: float(“67”), 返回: 67.0
complex(real [,imag ]) 创建一个复数, 例如: complex(5,20), 返回: (5 + 20j)
chr(x ) 将一个整数转换为一个字符,例如: chr(97), 返回: ‘a’
unichr(x ) 将一个整数转换为Unicode字符, 例如: unichr(97), 返回: u’a’
str(x ) 将对象 x 转换为字符串, 例如: str(520), 返回: ‘520’
oct(x ) 将一个整数转换为一个八进制字符串, 例如: oct(67), 返回: ‘0103’
hex(x ) 将一个整数转换为一个十六进制字符串,例如: hex(255), 返回: ‘0xff’
tuple(s ) 将序列 s 转换为一个元组, 例如:tuple(“beyond”), 返回:(‘b’, ‘e’, ‘y’, ‘o’, ‘n’, ‘d’)
list(s ) 将序列 s 转换为一个列表, 例如:list(“beyond”), 返回: [‘b’, ‘e’, ‘y’, ‘o’, ‘n’, ‘d’]
repr(obj ) 将对象 obj 转换为表达式字符串,具体见附录:repr函数详解
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象;例如: i = 7;eval(“2**i”),返回: 128
ord(x )  将一个字符转换为它的整数值, 例如: ord(‘a’), 返回: 97

Python数学常量

常量 描述
pi 数学常量 pi(圆周率,一般以π来表示, 3.1415926…)
e 数学常量 e,e即自然常数(自然常数, 2.718281828…)。​

Python  math 模块、cmath 模块

Python 中数学运算常用的函数基本都在 math 模块、cmath 模块中。

Python math 模块提供了许多对浮点数的数学运算函数。

Python cmath 模块包含了一些用于复数运算的函数。

cmath 模块的函数跟 math 模块函数基本一致,

区别是 cmath 模块运算的是复数

math 模块运算的是数学运算。

要使用 math 或 cmath 函数必须先导入:

import math
import cmath

查看 math 查看包中的内容:

>>> import math
>>> dir(math)
['__doc__', '__file__', '__name__', '__package__', 
'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 
'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 
'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 
'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 
'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 
'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
>>> 


查看 cmath 查看包中的内容:

>>> import cmath
>>> dir(cmath)
['__doc__', '__file__', '__name__', '__package__', 'acos', 
'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 
'e', 'exp', 'isinf', 'isnan', 'log', 'log10', 'phase', 
'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
>>> 


实例:

>>> import cmath
>>> cmath.sqrt(-1)
1j
>>> cmath.sqrt(9)
(3+0j)
>>> cmath.sin(cmath.pi/2)
(1+0j)
>>> cmath.log10(100)
(2+0j)
>>>

Python数学函数

函数 返回值 ( 描述 )
abs(x) 返回数字的绝对值,如abs(-13) 返回 13
ceil(x) 返回数字的上入整数,如math.ceil(-13.14) 返回 -13.0, 沿x箭头方向取整数 ->
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回数字的绝对值,如math.fabs(-13) 返回13.0
floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
max(x1, x2,…) 返回给定参数的最大值,参数可以为序列?

序列比较的不是长度,而是逐个从第0位开始比较

例如: max([2],[1,8]) 输出结果: [2]

例如: max(range(10))  输出结果: 9

min(x1, x2,…) 返回给定参数的最小值,参数可以为序列
pow(x, y) x**y 运算后的值, 即x的y次幂
round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数
sqrt(x) 返回数字x的平方根,返回类型为实数,如math.sqrt(4)返回 2.0 or 2+0j
log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0
log(x,[base]) 返回以自然常数e为基数的x的对数,比如math.log(math.e)返回1.0;

也可通过可选参数二,手动指定基数base,比如:math.log(100,10)返回2.0

modf(x) 返回一个元组tuple,其中元组第0位是x的小数部分,元组第1位是x整数部分,

两部分的数值符号与x相同,整数部分也以浮点型表示。

例如:math.modf(-5.20) 结果为: (-0.20000000000000018,  -5.0)

 


Python随机数函数

随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,

用以提高算法效率,并提高程序的安全性。

Python  random模块包含以下常用随机数函数:

函数 描述
choice(seq) 序列的元素中随机挑选一个元素,

比如random.choice(range(10)),从0到9中随机挑选一个整数。

再比如random.choice([5,2,6,7]), 输出结果只会是5267其中之一

random() random.random()会随机生成一个实数,它在[0,1)范围内。
seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst) 洗牌,将序列的所有元素随机排序
uniform(x, y) 随机生成一个实数,它在[x,y]范围内。
randrange ([start,] stop [,step]) 前闭后开,从指定范围内,按指定step递增的集合中获取一个随机数,step缺省值为1

例如: random.randrange(6,15,3)的结果: 只会是6或9或12其中之一,前闭后开

 


Python三角函数

Python包括以下三角函数:

函数 描述
degrees(x) 弧度转->角度,如math.degrees(math.pi/2) , 返回90.0
radians(x) 角度->弧度,如math.radians(180.0),  返回3.141592653589793
hypot(x, y) 返回欧几里德范数 sqrt(x*x + y*y)。例如勾股定理: math.hypot(3,4), 返回5.0
sin(x) 返回的x弧度的正弦值,如math.sin(math.pi/6), 返回0.49999999999999994

在直角三角形中,∠α(非直角)的对边与斜边的比叫做∠α的正弦,记作sinα,即sinα=∠α的对边/∠α的斜边 。

cos(x) 返回x的弧度的余弦值,如math.cos(math.pi/3), 返回0.5000000000000001

在直角三角形中,∠α(非直角)的邻边与斜边的比叫做∠α的余弦,记作cosα,即cosα=∠α的邻边/∠α的斜边 。

tan(x) 返回x弧度的正切值,如math.tan(math.pi/4), 返回0.9999999999999999

tan是正切的意思,角θ在任意直角三角形中,与θ相对应的对边与邻边的比值叫做角θ的正切值。若将θ放在直角坐标系中即tanθ=y/x。tanA=对边/邻边。在直角坐标系中相当于直线的斜率k。

asin(x) 返回x的反正弦弧度值。因为math.sin(math.pi/6)值为0.5, 所以:math.asin(0.5)*6, 返回: 3.14159626…
acos(x) 返回x的反余弦弧度值。因为math.cos(math.pi/3)值为0.5, 所以:math.acos(0.5)*3, 返回: 3.14159626…
atan(x) 返回x的反正切弧度值。因为math.tan(math.pi/4)值为1.0, 所以:math.atan(1.0)*4, 返回: 3.14159626…
atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值, 参数为:数字,返回结果为弧度。例如: atan2(1,1)*4, 返回: 3.1415926…

 附: repr(obj)函数 详解

还有一个__repr__函数,也是对应 repr(obj) 这个函数。

repr是representation (描述)的意思

意思是: 当需要显示一个对象在屏幕上时,将这个对象的属性或方法整理成一个可打印输出的格式。

这个功能与eval也可以对应, 如果将打印出的结果直接放到eval里,通常可以重新获得原来的对象。


比如:

>>> import datetime

>>> t1 = datetime.datetime.now()
>>> print repr(t1)
结果是:

>> datetime.datetime(2018, 9, 1, 14, 11, 0, 162221)


与此相类似的功能是 __str__
比如你有一个Girl类,当打印时你只希望它打印出女孩的姓名时,

那么你可以在 __str__ 函数里写上return self.name ,

这样当需要Girl当作一个字符串时,返回的就是女孩的姓名。


你使用:

>> print str(t1)  时,   结果是
>>> 2018-09-01 14:11:00.162221


如果想使用print(Obj)显示Girl类的对象,那就需要重写Girl类的__str__方法。

当你打印一个类的时候,那么print首先调用的就是类里面的定义的__str__

比如:

#coding=utf-8
# 未闻花名 vwhm.net
class Girl: 
	name = ''
	age = 0
	def __init__(self,name,age): 
		self.name = name
		self.age = age
		print ("in __init__ 构造函数")
	def __str__(self): 
		return "in __str__ 打印函数" + "," + self.name + "," + str(self.age) + "岁"

if __name__ == "__main__": 
	loli = Girl('面码',13) 
	print (loli) 

"""""""""""""""
输出结果:
in __init__ 构造函数
in __str__ 打印函数,面码,13岁
"""""""""""""""


再比如:

>>> class Girl:
...     def __init__(self):
...             print "in __init__ 构造函数"
...     def __str__(self):
...             return "in __str__ 打印函数"
...     def __repr__(self):
...             return "in __repr__ 直接输出"
... 
>>> loli = Girl()
in __init__ 构造函数

>>> print loli
in __str__ 打印函数

>>> "%s" % loli
'in __str__ \xe6\x89\x93\xe5\x8d\xb0\xe5\x87\xbd\xe6\x95\xb0'

>>> loli
in __repr__ 直接输出

>>> "%r" % loli
'in __repr__ \xe7\x9b\xb4\xe6\x8e\xa5\xe8\xbe\x93\xe5\x87\xba'
>>>