Python_note3 基本数据类型+time库使用

  • 方法论:Py语言数字及字符串类型
  • 实践能力:初步掌握字符串操作

数据类型及操作

  • 整数:十进制,二进制(0b/0B),八进制(0o/0O),十六进制(0x/0X) 无限制 。
  • 浮点类型:取值范围和精度够用,浮点数间运算存在不确定尾数,不是bug。
    53位二进制表示小数部分;0.1+0.2 == 0.3False,使用round(x,d)四舍五入。
    <a>e<b>:a*10的b次方。
  • 复数 z.real;z.image
  • 运算操作符
    x/y 除,x与y之商10/3结果3.33333
    x//y整数除,10//3结果3,%余数,x**y幂运算可开方
    整数–》浮点数–》复数【扩展】
  • 数值运算函数
    abs(x);divmod(x,y),商余,(x//y,x%y)同时输出商和余数;pow(x,y[,z])幂余,(xy)%z**,[…]表示可省略
    round(x,d),d默认0;max(a,b,c,d);min();**int()**取整,float(),complex()复数

实例3:天天向上的力量

pow(1.01,365)=37;pow(0.99,365)=0.03;

dayfactor=0.005
dayup=pow(1+dayfactor,365)
daydown=pow(1-dayfactor,365)
  • 五天进步1%,2天退步1%
#DayDayUp.py
dayup=1.0
dayfactor = 0.01
for i in range(365)
	if i % 7 in [6,0]:
		dayup = dayup*(1-dayfactor)
	else:
		dayup = dayup*(1+dayfactor)
print("工作日力量:{:.2f}".format(dayup))# 4.63介于0.001和0.005进步之间
  • 五天进步x%,2天退步1%,x多少赶上每天进步1%的人
#DayDayUpQ4.py
def dayUP(df):
    dayup = 1
    for i in range(365):
        if i % 7 in [6,0]:
            dayup = dayup*(1-0.01)
        else:
            dayup = dayup*(1+df)
    return dayup
dayfactor = 0.01
while dayUP(dayfactor) < 37.78:
    dayfactor += 0.001
print ("工作日努力:{:.3f}".format(dayfactor))#0.019,如果每天进步1.9%一年进步将是1000倍

  • 我的思考 连续进步11个月 休息一个月---->结果是20倍 坚持努力 适当放松
#DayDayUp.py
dayup=1.0
dayfactor = 0.01
for i in range(335):
    dayup = dayup*(1+dayfactor)
for i in range(30):
    dayup = dayup*(1-dayfactor)
print("连续工作11个月:{:.2f}".format(dayup))

字符串类型及操作

  • 字符串切片高级用法
    <字符串>[M:N:K] 根据步长K对字符串切片,MN默认则至开头结尾
    <字符串>[::-1] 实现字符串逆序
  • 字符串操作符
    x+y:连接字符串;x*n:赋值n次字符串x;x in s:如果x是s子串返回True
  • 字符串处理函数
    len(x);str(x)将数据转为字符串,与eval()函数功能相反;
    hex(x),oct(x)整数x转16/8进制;Unicode–chr(u)—单字符—ord(x)—Unicode;
  • Python字符串每个字符都是Unicode编码字符
    十二星座
for i in range(12):
	print(chr(9800+i),end="")#print 内参数end可设置换行
  • 字符串处理方法
    方法指<a>.<b>()风格中的函数<b>(),<a>指对象,方法本身是与<a>有关的函数
    字符串及变量也是<a>,存在方法
    str.lower()|str.upper()大小写
    str.split(sep)根据sep分割
    str.count(substr)统计子串数目
    str.replace(old,new)替换
    str.center(width[,fillchar])str根据width居中,[…]内容表示可选,"p".center(3,"=")得为'=3='
    str.strip(chars)从str中去掉左侧右侧chars中列出的字符"= python= ".strip(" =np")"ytho"
    str.join(iter)在iter变量除末尾元素外每个元素追加一个str,",".join("123")得"1,2,3"
  • 字符串类型格式化
    槽:"{1} is {0}".format("He","afused")afused is He,槽号可对应
    :<填充><对齐><宽度>引导符号|单个字符|左<右>上^|宽"{0:=^3}".format("p")'=p='
    <,>数字千位分隔符;<.>浮点小数精度或子串最大输出长度;<类型>整数:b,c,d,o,x,X,浮点数e,E,f,%
    print("{0:=^20,.2%}".format(25555.55))全部格式使用得===2,555,555.00%====

模块2 Time库使用

  • time库是python处理时间的标准库,用于程序性能分析
时间获取

time.time()获取从1970:00:00至今时间戳,浮点数
time.ctime()获取易读字符串时间
time.gmtime获取计算机可处理时间格式

时间格式化

strftime(tpl,ts)tpl是格式化模板字符串,ts是计算机内部时间类型变量

import time
t = time.gmtime()
time.strftime("%Y-%m-%d %H:%M:%S",t)
#'2019-03-05 02:57:08'

%Y年;%m数字月;%B月;%b缩写;$d;%A星期;%a缩写;%H24时;%h12时;%p上下午;%M分;%S
strptime()解析自定义的时间字符串

timeStr = '2019-03-05 02:57:08'
time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
程序计时

sleep()休眠

def wait():
	time.sleep(3.3)
wait()

perf_counter()计时起点不确定,连续调用差值

start = time.perf_counter()
end = perf_counter()
end - start

实例4:文本进度条

  • 单行动态刷新
    刷新本质是用后打印的字符覆盖之前的字符
    不能换行,控制print()
    要能回退:打印后光标退回之前的位置 \r,IDLE屏蔽\r 用cmd等
import time
for i in range(101):
	print("\r{:3}%".format(i),end="")
	time.sleep(0.1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值