数值与日期

一、数值

1. 格式化

  • 一般形式
    ‘数值:{:}’.format(a[0])
  • 显示正负号
    ‘分数:{:-}’.format(a[0]) #显示正负号
  • 显示几位小数
    ‘数值:{:.2f}’.format(a[0])
  • 显示百分比
    ‘分数:{:.2%}’.format(1/5)
    在这里插入图片描述

2.小数位处理

  1. math.trunc() 截去小数部分
import math
a = [-2.9,-2.4,2.4,2.9]
result = map(math.trunc,a)
print(list(result))
[-2, -2, 2, 2]
  1. math.ceil() 向上取整
import math
a = [-2.9,-2.4,2.4,2.9]
result = map(math.ceil,a)
print(list(result))
[-2, -2, 3, 3]
  1. math.floor() 向下取整
import math
a = [-2.9,-2.4,2.4,2.9]
result = map(math.floor,a)
print(list(result))
[-3, -3, 2, 2]
  1. round() 四舍五入
import math
a = [-2.9,-2.4,2.4,2.9]
result = map(round,a)
print(list(result))
[-3, -2, 2, 3]

二、随机数

  1. random.choice(lst)序列中随机选择一个元素
  2. random.sample(lst,n)序列中随机选择n个元素,lst的长度要比n大,否则会报错。sample是无重复抽样
  3. random.shuffle(lst) 随机打乱一个可变序列,改变原序列,无返回。不支持字符串、元组等不可变序列
  4. random.randint(a,b)#生成指定范围内的随机整数N。 a<=N<=b
  5. random.random()#生成随机浮点数 [0.0, 1.0).
  6. random.getrandbits(K)# 生成2^k位数的随机数
import random
# lst = list(range(10))
lst = list('abcde')
print('原数组:',lst)
print('choice:从序列中随机选出一个数',random.choice(lst))# 从序列中随机选出一个数
print('choice:从序列中随机选出一个数',random.choice(lst))# 从序列中随机选出一个数
print('sample:不重复地抽取3个数',random.sample(lst,3))# 从序列中随机选出3个数,返回列表
print('shuffle:随机打乱一个数组,改变原数组,无返回',random.shuffle(lst))# 随机打乱一个数,改变原数组,无返回
print('打乱后的数组:',lst)

原数组: ['a', 'b', 'c', 'd', 'e']
choice:从序列中随机选出一个数 b
choice:从序列中随机选出一个数 c
sample:不重复地抽取3个数 ['c', 'd', 'e']
shuffle:随机打乱一个数组,改变原数组,无返回 None
打乱后的数组: ['b', 'a', 'c', 'e', 'd']
import random
a = 1
b = 10
print(random.randint(a,b))#生成指定范围内的随机整数N。 a<=N<=b
print(random.random())#生成随机浮点数 [0.0, 1.0).
print(random.getrandbits(5))# 生成指定bit位数的随机数
10
0.45699859741584814
31

shuffle 和 permutation 的区别

三、日期时间

1. datetime模块

  • date 处理日期(有年月日属性)
  • time 处理时间 (有时分秒属性)
  • datetime 处理日期与时间 (有年月日时分秒属性)
import datetime
# 构造日期
birth = datetime.date(2019,8,21)# <10的月份,前面不加0
# 构造时间
t = datetime.time(10,1,20)# 时分秒
# 构造日期与时间
t2 = datetime.datetime(2019,8,21,7,30,0)
now = datetime.datetime.now()# 年月日时分秒
print('构造日期:',birth)
print('年:',birth.year)
print('构造时间:',t)
print('时:',t.hour)
print('构造日期与时间:',t2)
print('自带的此时时间:',now)
构造日期: 2019-08-21
年: 2019
构造时间: 10:01:20
时: 10
构造日期与时间: 2019-08-21 07:30:00
自带的此时时间: 2019-08-21 20:17:36.400167

2. 格式转换

  • 字符串转到日期
    t = datetime.datetime.strptime(s,‘%Y-%m-%d’)
  • 日期转到字符串
    s=now.strftime(‘%Y-%m-%d’)
# 字符串转时间
s = '2019-8-21'
t = datetime.datetime.strptime(s,'%Y-%m-%d')
print('字符串 ',s)
print('转后的时间 ',t)
#时间转字符串
now = datetime.datetime.now()
print('时间 ',now)
s_now = now.strftime('%Y~%m~%d')
print('转后的字符串 ',s_now)
字符串  2019-8-21
转后的时间  2019-08-21 00:00:00
时间  2019-08-21 20:07:52.090167
转后的字符串  2019~08~21
  • 占位符
    %Y 四位年份
    %y 二位年份
    %m 二位月份
    %d 二位日期
    %H 二位小时
    %M 二位分钟
    %S 二位秒数
    %f 微秒

3. 时间差 timedelta

days
seconds

  • 计算时间差
t1 = datetime.datetime(1919,1,1,7,30,0)
t2 = datetime.datetime(2019,8,21,7,30,30)
diff = t2-t1
print(diff)
print('相减后日期',diff.days)
print('相减后秒',diff.seconds)
print('相减days*24+seconds',diff.total_seconds())
36757 days, 0:00:30
相减后日期 36757
相减后秒 30
相减days*24+seconds 3175804830.0
  • 时间前移、后退
t1 = datetime.date(2019,8,21)
print('当前时间 ',t1)
t2 = t1 + datetime.timedelta(days=-15)# 前移
print('前移15天',t2)
t3 = t1 + datetime.timedelta(days=26)# 后移
print('往后26天',t3)
当前时间  2019-08-21
前移15天 2019-08-06
往后26天 2019-09-16
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值