您的位置:首页 > 编程语言 > Python开发

Python基础知识(五)--数据类型

2012-01-02 15:44 429 查看
#标识符,以字母或下划线开头,不与关键字重复
#不使用系统内置标识符、函数名、异常名
#不使用开头和结尾都是下划线作为自定义标识符名
#以免与系统定义的特殊方法或变量冲突
#当循环不影响实际变量的时候,可以在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: