数学运算函数
asb(x) | 返回绝对值 |
divmod(x,y) | 返回一个(x//y ,x%y)的元组,可以用两个变量来接收它 |
max(seq) ,min(seq) | 返回seq序列的最大值,最小值 |
pow(x,y) | 返回x的y次方 |
round(x,prec) | 返回浮点数x的四舍五入的值,后面是设置保留到第几位小数,默认是0 |
sum(seq) | 返回seq序列的元素和 |
字符串的内置函数
处理字符串函数 | |
capitalize() | 字符串的首字母大写,其余的小写 |
lower() ,upper() | 字符串的字母都转换成小写,大写 |
swapcase() | 字符串的字母大小写互换 |
title() | 字符串中的每个单词的首字母大写,其余的字母小写 |
替换和查找函数 | |
find( substr ,[start,[end]]) | 返回字符串中第一次出现子字符串substr的位置,如果没有就返回-1 |
index(substr,[start,[end]] ) | 和find函数一样,但是如果找不到substr时就会出现运行时错误 |
replace(oldstr, newstr, [count]) | 将oldstr替换为newstr,count为替换次数 |
rfind(substr ,[start,[end]]) | 从右侧开始找,返回字符串第一次出现的位置,找不到就返回-1 |
rindex(substr ,[start,[end]]) | 和rfind()一样,但是没有会报错 |
字符串统计函数 | |
count(substr,[start,[end]]) | 返回substr在字符串出现的次数,统计范围是[start,end) |
len(str) | 返回字符串得长度 |
字符串的判断格式函数 | |
startswith(substr) ,endswith(substr) | 检查字符串是否是以substr开头的,以substr结尾的 |
isallnum() | 检查字符串是否完全是由字母或数字组成 |
isalpha() | 检查字符串是否只有字母组成 |
isdigit() | 检查字符串中是否只包含数字 |
isnumeric() | 检查字符串中是否只包含数字 (和上面有一点点区别) |
islower() , isupper() | 检查字符串中的字母是否都是小写 ,大写 |
isspace() | 检查字符串是否都是空格 |
字符串拆分合并函数 | |
join(seq ) | 将seq序列中的元素以字符串连接起来,例如 |
split(sep,[num]) | 以seq为分隔符分割字符串,num是分割的次数 |
字符串的对齐函数 | |
center(width[,fillchar]) | 返回长度是width的字符串,原字符串居中对齐,长度不够就以fillchar对齐,默认是空格填充 |
ljust( width [, fillchar]) | 左对齐,其他和上面一样 |
rjust( width [, fillchar]) | 右对齐 |
zfill(width) | 右对齐,长度不足的时候前面填充0 |
常用模块
模块介绍和导入
python模块是一个.py的文件,里面包含了很多python定义的对象和语句 编程的时候如果需要python内置的模块,首先使用import语句将该模块导入才能使用,导入有四种方式:
常规导入 | 语法: |
使用别名导入 | 语法: |
部分导入 | 语法: |
全部导入 | 语法: |
math数学模块
import math #直接导入
math.e | 自然数e |
math.pi | 圆周率pi |
math.ceil(x) | 返回不小于x的整数 |
math.floor(x) | 返回不大于x的整数 |
math.degrees(x) | 弧度转度 |
math.radians(x) | 度转弧度 |
math.exp(x) | 返回e的x次方 |
math.fabs(x) | 返回x的绝对值 |
math.factorial(x) | 返回x的阶乘 |
math.log(x[,base]) | 返回以base为底的对数,base默认是e |
math.sqrt(x) | 返回x的平方根 |
math.modf(x) | 返回x的小数和整数部分 |
注意 | math是不能处理复数的,如果需要处理复数需要引入cmath模块 |
random随机模块
直接import random导入
注意:python的随机数是伪随机数,由随机种子控制的,按照一定的算法一次生成,其中的随机种子如果不设置的话就会采用时间串来充当,因为时间每一次调用的时间不一样,所以生成的数不一样,所以就有随机的感觉
如果设置了随机种子,无论调用多少次,随机数都是一样的.
import random
random.seed(1)
a=random.randint(0,10) #这里无论执行多少次结果都是一样的
choice(seq) | 返回一个从seq(列表,元组,字符串)序列里面随机选的元素 |
randrange( [start,]stop[,step]) | 返回一个在[start,stop) 范围内,以step为步长的递增整数序列中的随机项 |
random() | 返回一个[0,1)的随机浮点数 |
seed(x) | 改变随机数生成器的种子 |
shuffle(seq) | 将序列中的元素序列进行打乱 |
randint(min,max) | 返回 一个[min,max]范围内的随机整数,Return a random integer N such that a <= N <= b |
uniform(min,max) | 返回 一个[min,max)范围内的随机浮点数 |
sample(seq ,num) | 返回从seq里面随机选取num个元素的子序列 |
例如这样随机洗牌
import random
ls=list(range(1,55))
print(ls)
random.shuffle(ls)
print(ls)
datetime和time模块
这两个都是内置模块,不需要安装,datetime基于time模块进行了封装,所以一般使用datetime
time模块
表示时间的三种格式
时间戳
时间戳表示从1970年1月1号00:00:00开始代现在按秒计算的总秒数,这种方式广泛应用在Unix和Linux系统中
时间元组
time模块提供了一个time.struct_time的类,该类代表一个时间对象,它主要包含 9 个属性:tm_year、tm_mon、tm_mdayr、tm_hour、tm_min、tm_min、tm_sec、tm_wday、 tm_yday、tm_isdst,分别表示年、月、日、时、分、秒、周、一年内第几天和夏实令等。
import time
t=time.localtime()
print(t)
print(t.tm_mday)
'''结果
time.struct_time(tm_year=2020, tm_mon=3, tm_mday=25, tm_hour=9, tm_min=45, tm_sec=26, tm_wday=2, tm_yday=85, tm_isdst=0)
25
'''
格式化时间
将时间的对象转化成更具有可读性
例如:
import time
t=time.localtime()
print(time.strftime("%Y-%m-%d%H:%M:%S",t)) #strftime是将时间对象转化成字符串
#结果:2020-03-2510:18:24
print(time.strptime("2020-3-25","%Y-%m-%d"))
#结果:time.struct_time(tm_year=2020, tm_mon=3, tm_mday=25, tm_hour=0, tm_min=0,
# tm_sec=0, tm_wday=2, tm_yday=85, tm_isdst=-1)
time.sleep(2) #延迟两秒
datetime模块
datetime模块封装了time模块,例如:
import datetime
d=datetime.date.today() #得到当前的年月日,datetime.date(2020, 3, 28)
n=datetime.datetime.now() #得到当前的年月日时分秒,datetime.datetime(2020, 3, 28, 11, 24, 37, 927414)
t1=n+datetime.timedelta(3) #后退三天,默认单位是填,datetime.datetime(2020, 3, 31, 11, 24, 37, 927414)
t2=n+datetime.timedelta(hours=3) #后退三个小时,datetime.datetime(2020, 3, 28, 14, 24, 37, 927414)
t3=t1-t2
print(t3) #2 days, 21:00:00
print(type(t3)) #<class 'datetime.timedelta'>
import datetime,time
#创建时间对象
d1=datetime.datetime(2020,3,23,14,23,23) #datetime.datetime(2020, 3, 23, 14, 23, 23)
#利用时间戳创建datetime对象
d2=datetime.datetime.fromtimestamp(time.time()) #datetime.datetime(2020, 3, 28, 11, 33, 53, 712111)
d3=datetime.datetime.fromtimestamp(1) #datetime.datetime(1970, 1, 1, 8, 0, 1),就是比1970,1,1,0,0,0多了一秒,因为我们时区是第八区,所以多了八个小时
datetime.datetime类的方法和属性
from datetime import datetime
#datetime.datetime类的方法和属性
from datetime import datetime
d1=datetime.max # datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
d2=datetime.utcnow() #datetime.datetime(2020, 3, 28, 4, 0, 33, 857137)
d3=datetime.strptime('2020-3-28','%Y-%m-%d') #datetime.datetime(2020, 3, 28, 0, 0)
d4=datetime(2020,3,28) #datetime.datetime(2020, 3, 28, 0, 0)
d5=datetime.strftime(d4,'%m-%d') #'03-28'
d6=d4.strftime('%Y-%m-%d') #'2020-03-28'datetime.datetime这个类里面就有strftime这个方法
dt = datetime.datetime.now ()
#练习
#输入类似 2020-3-8的日期字符串,输出星期几,并判断该日是当年的第几天。
from datetime import datetime
s=input("输入格式是2020-3-28的日期: ")
d=datetime.strptime(s,'%Y-%m-%d')
print("{}是{},当年的第{}天".format(s,d.isoweekday(),(d-datetime(d.year,1,1)).days+1))
#结果:2020-1-2是4,当年的第2天