python中数值与日期方法
-
数值格式化
-
小数位的处理
-
随机数
-
日期和时间
-
日期和时间计算,datetime.timedelta类
数值
数值格式化
实际开发中,将特定数值融入到字符串里面来格式化表现的话,那些细节需要注意:
1.
格式化:‘数值:{}’.format()
再python3中可以简化,可以写成f开头的字符串,f是format格式化意思,f’数值‘:{}’。要呈现动态内容时,直接在花括号中写上变量名称。
2. 指定显示的格式
指定显示数值类型
'数值:{:f}'.format(a) #{:}冒号前面出现实际的值,冒号后面指定格式,比如希望以浮点型显示,后面就写上f。结果如下
#python3可写成
f'数值:{a:f}'
还可以在前面加上正负号,前提时这个数原本就是正/负数
指定以千分位隔开显示
在f前面写上逗号,在指定数值类型符号前写上逗号
指定精度
# 保留两位小数,且在小数位保留时会自动四舍五入
f'数值:{b:,.2f}' #在逗号后面再加上.2
x =18
y =23
'{:.2f}.format(x / y)
# 以百分比形式显示
'{:.2%}'.format(x / y)
小数位的处理
trunc截断,
import math
math.trunc(b) #小数点后面的戒掉了,保留了整数,没用到四舍五入
math.trunc(123.987)
# 向上取整和向下取整
math.floor(123.123.987)
math.ceil(123.987)
# 四舍五入,全局函数round
ronud(b,2) #后面的2指示四舍五入的位数
随机数
1.
shuffle:把…变换位置,调动,洗牌,改组,
sample:抽样检验,
lst = list(range(1,11))
# 从列表中获得随机数值,导入random标准库模块
import random
# 随机从列表中选择一些数值。random.choice从特定序列中找出随机值
random.choice(lst)
# 从序列中随机拿三个数random.sample,找出特定数量的序列
random.sample(lst,3)
# 将序列的顺序改变,打乱,random.shuffle,返回结果为空,需要print一下
random.shuffle(lst)
2.
只是像简单获取一个数值,这个数值是int或float,
# 随机产生一个整数
random.randint(1,10) #1到10之间随机产生一个整数
# 浮点数
random.random #可以不指定范围
# 指定比特位数的随机数
random.getrandbits(5) #获得5个比特位的随机数
日期和时间
python标准库中专门的包datetime
包中准备了数据类型,
date:只考虑年月日,不管时分秒
time:时分秒
datetime:日期和时间一起处理
import datetime
# datetime模块中有两个常量MAXYEAR,MINYEAR
datetime.MAXYEAR
datetime.MINYEAR
# 今天的日期
today = datetime.date.today() #来自于datetime模块下的date类下的today方法
today.year
today.month
todday.day
today.weekday() #今天是周几,从0开始
today.isoweekday() #按照国际标准定义的周几,从1开始
# 自己构造一个日期,比如说生日.三个参数分别对应年月日
birthdate = datetime.date(2010,3,12)
birthdate.year
birthdate.day
# 只要时间不要年月日
t = datetime.time(15,46,32)
t.hour
t.minute
t.second
# 将日期和时间结合起来
now = datetime.datetime.now()
now.year
now.day
now.second
t = datetime.datetime(1993,3,3,20,33,44)
# 将字符串与日期来回转换
s = '2018-3-15'
type(s) #class 'str'
# 将字符串转换位真实的时间格式
t = datetime.datetime.strptime(s,'%Y-%m-%d) #转换的字符串来自于s。在里面指定月份年份,%Y是第一个位置呈现四位的年份,%m是月份,%d是日期。
# 将时间格式转换为字符串
now = datetime.datetime.now()
txt = now.strftime('%Y/%m%d')
txt
日期和时间计算,datetime.timedelta类
timedelta是时间差,时间跨度,一种数据类型
将时间拿出来计算,时间计算不同于数值计算,时间是60进制,
import datetime
d = datetime.datetime(2018,3,5,22,44)
birthdate = datetime.datetime(2016,5,2,19,33,44)
d - birthdate
diff = d - birthdate #diff类型就是timedelta
diff.days #2018年3月5号和216年5月2号之间隔了672天,
diff.seconds
diff.total_seconds() #两个日期中间相隔的秒数
diff.total_seconds() #两个日期中间相隔的总的时间换算为秒数
o = datetime.datetime(2008,8,8,20,8)
# 时间往后推100天
o + datetime.timedelta(days = 100)
# 时间往前推100天
result = d + datetime.timedelta(days=-100)
# 日期以秒为单位改变
d + datetime.timedelta(seconds=3000)
结果类型:timedelta
datetime.timedelta(672,11416),括号中两个数字来自于timedelta下面的两个属性,
实际开发中,照上面的写太麻烦,可以一次性导入包下面的常见类型
# 一次性导入datetime包下面的这些类型
from datetime import date,time,datetime,timedelta
# 就可以直接用这些方法了
timedelta() #时间差