Python基础知识(五)--数据类型
- #标识符,以字母或下划线开头,不与关键字重复
- #不使用系统内置标识符、函数名、异常名
- #不使用开头和结尾都是下划线作为自定义标识符名
- #以免与系统定义的特殊方法或变量冲突
- #当循环不影响实际变量的时候,可以在for..in中使用单个_
- for _ in (0, 1, 2, 3, 4, 5):
- print("Hello")
- #关键字列表
- and continue except global
- lambda pass while as
- def False if None
- raise with assert del
- finally import nonlocal return
- yield break elif for
- in not True class
- else from is or
- try
- #整数
- x = 14600926 #10进制
- print(x) #14600926
- x = 0b110111101100101011011110 #二进制
- print(x) #14600926
- x = 0o67545336 #8进制
- print(x) #14600926
- x = 0xDECADE #16进制
- print(x) #14600926
- a = 5
- b = 7
- print(a + b) #12
- print(b - a) #2
- print(a * b) #35
- print(a / b) #0.7142857142857143
- print(b // a) #1
- #相当于round(b / a)
- print(b % a) #2
- #求模(取余数)
- print(a ** b) #78125
- #a的b次方,相当于power(a, b)
- x = -13
- print(abs(x)) #13
- #绝对值
- print(divmod(b, a)) #(1, 2)
- #b除以a的商和余数
- print(pow(a, b)) #78125
- #同a ** b
- print(pow(a, b, 3)) #2
- #相当于(a ** b) % 3
- print(round(3.1534324)) #3
- print(round(3.1534324, 4)) #3.1534
- #四舍五入,当指定第二个参数
- #返回包含指定个数小数位的数
- #对象的创建可以通过给变量赋字面意义上的值如:
- i = 15
- print(i) #15
- #或将相关的类型做函数调用
- x = int(17)
- print(x) #17
-
- #有些对象如decimal.Decimal只能通过数据类型创建
- #1.当不使用参数调用数据类型函数时,会被赋值一个默认值
- x = int()
- print(x) #0
-
- import decimal
- y = decimal.Decimal()
- print(y) #0
-
- #2.使用一个参数调用数据类型函数
- # 当参数是同样的数据类型时候,会创建一个新对象
- # 新对象是原始对象的浅拷贝
- # 当参数不是同样类型就会尝试进行转换
- a = bin(1985)
- print(a) #0b11111000001
- a = hex(1985)
- print(a) #0x7c1
- a = oct(1985)
- print(a) #0o3701
-
- #3.使用两个参数调用数据类型函数
- #int(s, base)参数s为欲转换的字符串,参数base是转换时的进制
- #base一般可选2、8、10、16...
- #long(s, base)用法与同上
- a = int('1985', 10)
- print(a) #1985
- a = int('0x7c1', 16)
- print(a) #1985
- print(int('A4',16)) #164
-
- #整数位逻辑操作符
- i|j #逻辑OR
- i&j #逻辑AND
- i^j #逻辑XOR
- i<<j #i左移j位
- i>>j #i右移j位
- ~i #反转i的每一位
-
- #布尔型
- #有两个内置的布尔型对象True/False
- a = (1 == 2)
- print(a) #False
- print(not a) #True
- print(a and True) #False
- print(a or True) #True
-
- #浮点类型
- #float
- #python3.x对于float类型使用David Gay(?)算法,但仍然不能保证准确
- print(0.0, 5.4, -2.5, 8.9e-4) #0.0 5.4 -2.5 0.00089
-
- #对于需要使用高精度的时候,应该选择decimal.Decimal
- #它在进行计算的时候可以达到我们指定的精度,默认小数点后28位
- #且可以准确表示循环小数
- #decimal运算速度慢,但准确性好,适合财务计算
-
- #浮点数
- #所有数值型运算与函数都可以与浮点数一起使用
- def equal_float(a, b):
- return abs(a - b)
-
- print(equal_float(1.1, 2.2)) #1.1
-
- import sys
- print(sys.float_info.epsilon) #2.220446049250313e-16
- #sys.float_info.epsilon是表示特定机器上两个浮点数的最小区别
-
- #使用int函数可以转换浮点数为整数-返回整数舍弃小数
- #用round()可以对小数部分四舍五入
- #用math.floor()和math.ceil()向上或向下转为最邻近的整数
- x = 1.35
- print(int(x)) #1
- print(round(x)) #1
-
- import math
- print(math.floor(x)) #1
- print(math.ceil(x)) #2
-
- #如果浮点数小数部分为0,float.is_integer()返回True
- x = 3.0
- print(x.is_integer()) #True
-
- #foat.hex()可将浮点数以十六进制表示为字符串
- #相反操作是float.fromhex()
- x = 1.35.hex()
- print(x) #0x1.599999999999ap+0
- x = float.fromhex('0x1.599999999999ap+0')
- print(x) #1.35
- print(x.hex()) #0x1.599999999999ap+0
- #math模块的函数与常量
- #math.acos(x) #返回弧度x的反余弦值
- #math.acosh(x) #返回弧度x的反正切值
- #math.asin(x) #返回弧度x的反正弦值
- #math.asinh(x) #返回弧度x的反双曲正弦
- #math.atan(x) #返回弧度x的反正切
- #math.atan2(y, x) #返回弧度y / x的反正切
- #math.atanh(x) #返回弧度x的双曲正切
- #math.ceil(x) #返回大于或等于x的最小整数
- #math.copysign(x, y)#将x的符号设置为y的符号
- #math.cos(x) #返回弧度x的余弦
- #math.cosh(x) #返回弧度x的余弦值(角度)
- #math.degrees(x) #将浮点数x从弧度转换为度数
- #math.e #常数e,约等于2.718281828459045
- #math.exp(x) #返回e的x次方,即math.e ** x
- #math.fabs(x) #返回|x|,即x的绝对值
- #math.factorial(x) #返回x!
- #math.floor(x) #返回小于等于x的最大整数
- #math.fmod(x, y) #生成x除以y后的模(余数)比%更好
- #math.frexp(x) #返回一个二元组,分别是x的指数部分与假数部分
- #math.fsum(i) #对iterable i中的值进行求和?
- #math.hypot(x, y) #(x平方+y平方)的平方根
- #math.isinf(x) #如果浮点数x是±inf(±∞)则返回True
- #math.isnan(x) #如果x不是一个数字则返回True
- #math.ldexp(m, e) #返回m * (2 ** e)是math.frexp(x)的反转
- #math.log(x, b) #log x以b为底,b可选,默认为math.e
- #math.log10(x) #log x以10为底
- #math.log1p(x) #log(1+x)以e为底,x近似于0时更准确
- #math.modf(x) #以floatS形式返回x的小数与整数部分的元组
- #math.pi #常量π,约为3.141592653589793
- #math.pow(x, y) #返回x ** y(浮点数)
- #math.radians(x) #角度x转换为弧度
- #math.sin(x) #返回弧度x的正弦
- #math.sinh(x) #返回弧度x的双曲正弦值
- #math.sqrt(x) #返回x的平方根
- #math.sum(i) #对iterable i中的值进行求和?
- #math.tan(x) #返回弧度x的正切值
- #math.tanh(x) #返回弧度x的双曲正切值
- #math.trunc(x) #返回x的整数部份与int(x)相同
-
- #math.hypot(x, y)计算原点到point(x, y)的距离,
- #与函数math.sqrt((x ** 2) + (y ** 2))
-
- #math依赖于编译python时使用的底层数学模块,一些错误条件与边界
- #情况在不同平台下会有不同的表现
- #复数
- #复数是一对浮点数,一个表示实数部分,一个表示虚数部分(其后跟一个字母j)
- #复数的部分都以属性名形式存在,分别是:real和imag
- z = -1.892 + 5.742j
- print(z.real) #-1.892
- print(z.imag) #5.742
-
- #除//、%、divmod()从及三个参数的pow()之外,
- #所有数值型操作符及函数都可用于复数运算,
- #math模块中的函数不能处理复数
- #cmath模块中的函数用来处理复数
- #除math中的函数外 ,还包括cmath.phase()/cmath.polar()/cmath.rect()
- #此外复数有一个conjugate()方法用于改变虚数部分的符号
- z += 1
- print(z) #(-0.8919999999999999+5.742j)
- z -= 1
- print(z) #(-1.892+5.742j)
- print(z.conjugate())#(-1.892-5.742j)
-
- #十进制数字
- #创建十进制数字用decimal模块里面的decimal.Decimal()
- #参数可以为整数或字符串,不能用浮点数
- #浮点数用decimal.Decimal.from_float()函数
- a = decimal.Decimal(5)
- b = decimal.Decimal("5.34")
- print(a + b) #10.34
- #所有数值型操作符及函数都可用于decimal.Decimal
- #但**操作符左侧为decimal.Decimal时右侧必须为整数pow()函数同样
- #math/cmath里面的函数不适合于处理decimal.Decimal
- print(a.exp()) #148.4131591025766034211155800
- print(a.ln()) #1.609437912434100374600759333
相关文章