Python的一些进阶补充

Python进阶补充,参考了《Python3从入门到实战》这本书。


参考了《Python3从入门到实战》

一、 可以用isinstance()判断一个对象是否为某种类型的对象

print(isinstance(2,int)) #判断2int类型的对象吗?
运行结果如下:
True

二、Python可通过在数的前面加前缀来表示进制:

1.加0b或0B来表示二进制数;

2.加前缀0o或0O来表示八进制数;

3.加前缀0x或0X来表示十六进制数.

print(0b0110100101)
print(0o703516)
print(0x7F3BA)
运行结果如下:
421
231246
521146

三:可以用内置函数bin(),oct(),hex()分别得到一个数的二进制,八进制,十六进制对应的字符串:

print(bin(412))
print(oct(412))
print(hex(412))
运行结果如下:
0b110011100
0o634
0x19c

四:Python提供了高精度的Decimal类和分数计算的Fraction类:

import Decimal
from fractions import Fraction as F
print(0.1)
print(F(1,3))#表示分数1/3
print(1/F(5,6))#表示分数6/5

#Python用于数值计算的函数
print(abs(-3.4))
print(min(3.4,2.8))
print(max(3.4,2.8))
print(pow(0.3,4))
print(round(2.8))#取最接近的整数
print(round(2.3))
print(round(-2,3))
运行结果如下:
3.4
2.8
3.4
0.0081
3
2
-2

五:导入数学模块:

	import math
    print("*"*50)
    print(math.pi)
    print(math.e)
    
    #浮点计算可能产生两个异常值,inf和nan,也可能抛出一个OverflowError异常。
    #当浮点数超过float类型数值表示范围时,产生的结果是无穷大(inf)
    #并不是所有溢出的值都用inf表示,结果是inf还是异常是底层C Python决定的
    
    print("*"*50)
    x = 10.0 ** 200
    y = x*x
    print(y)
    print(math.isinf(y)) 
    
    #如果除inf的结果是未定的,则结果是nan(未定的数值).
    #因为nan不能和其他值进行比较,所以只能用函数ianan()检查nan
    
    print("*"*50)
    x = (10.0) ** 200 * (10.0) ** 200
    y = x/x
    print(y)
    print(math.isnan(y))
    
	运行结果如下:
	**************************************************
	3.141592653589793
	2.718281828459045
	**************************************************
	inf
	True
	**************************************************
	nan
	True

六:也可以使用函数isfinite()来检查一个数值是常规数值还是特殊值inf 或 nan

import math
for i in [math.pi,math.nan,math.inf]:
	print(math.isfinite(i))
运行结果如下:
True
False
False

七:浮点数的相等比较

1.isclose(a,b,*,rel_tol=le-09,abs_tol=0.0) :默认形参rel_tol和abs_tol分别表示相对误差和绝对误差

import math
a = 1.0 - 0.99
b = 100 - 99.99
print(a==b)
print(math.isclose(a, b))
运行结果如下:
False
True

八:浮点数转化为整数

1.函数trunc()截断浮点数的小数部分

2.函数floor()能将转化为比他小的最大整数

3.函数ceil()将浮点数转换为比他大的最小整数

import math
a = 1.8
print(math.trunc(a))
print(math.floor(a))
print(math.ceil(a))
运行结果如下
1
1
2

4.sqrt(x)用于专门计算一个数x的平方根

5.pow(x,y)用于计算x的y次方,类似于x ** y,但pow(x,y)可以保证按照浮点数运算,而x ** y只可以返回一个int或float

6.exp(x)以自然常数为底的指数函数

7.expml(x)计算e**x - 1

8.对数函数log(x,base) 底为base 还有一些变体log2(x) log10(x) log1p(x):

from math import *
print(sqrt(9))
print(pow(3,3))
print(exp(1))
print(expm1(1))
print(log10(10))
print(log1p(1))
#什么都不写就是ln
print(log(e))
运行结果如下:
3.0
27.0
2.718281828459045
1.718281828459045
1.0
0.6931471805599453
1.0

九:角度与弧度

1.函数radians()将角度值转换成弧度

2.函数degrees()将弧度值转换成角度值

from math import *
print(radians(45))
print(degrees(pi))
运行结果如下:
0.7853981633974483
180.0

十:math模块中包含了各种三角函数和反三角函数如sin,cos,tan,atan.

from math import *
print(sin(0))
print(cos(0))
print(tan(0))
print(degrees(atan(1)))#转化成角度了

运行结果如下:
0.0
1.0
0.0
45.0

十一、随机数:random模块

import random
l = [1,2,3,4]
print(random.random())#0-1的随机小数
print(random.randint(100, 900))#100-900的随机数
print(random.choice(l))#任意选取一个列表中的元素
random.shuffle(l)#打乱列表
print(l)

'''
0.9724452742237619
188
1
[1, 2, 4, 3]
'''


猜你喜欢

转载自blog.csdn.net/qq_45911278/article/details/110311326
今日推荐