python 学习第三天
数字类型及其操作
-整数类型
-浮点数类型
-复数类型
-数值运算操作
-数值运算函数
1.整数类型:可正可负,没有取值范围限制
pow(x,y):计算x的y次方,想算多大算多大
1.1进制表示
十进制
二进制 :0b或者0B开头
八进制 :0o或者0O开头
十六进制 :0x或者0X开头
2.浮点数类型:与数学中实数的概念一致,是带有小数点及小数的数字,取值范围-10^308~10^308,精度范围10^-16
2.1浮点数间运算存在不确定尾数,不是bug,因为计算机表示小数的时候保存的是一个近似值。
0.1+0.2==0.3 #False,因为精度问题
解决方法 round(x,d)函数 :对x四舍五入,d是小数的截取位数
round(0.1+0.2,1)==0.3 #True
2.2浮点数可以用科学计数法表示
xey 表示x*10^y
3.复数类型:与数学复数概念一致
例:z=1.23e-4+5.6e+89j
实部:z.real
虚部:z.imag
4.数值运算操作符
4.1 +、-、*、/
不同于其他语言,python的除法得到的商是浮点类型,与数学中的除法一致
4.2 // #整数除
10//3==3 #True
4.3
+x :x本身
-y :y的负值
x%y :取余
x**y :x^y #与pow函数效果相同,当y是小数时,是开方运算
4.4增强操作符
x+=y
x-=y
x*=y
x/=y
x//=y
x%=y
x**=y
5.数字类型间混合运算时,结果为“最宽”的类型
宽度 :整数<浮点数<复数
例:123+4.0=127.0
6.数值运算函数
abs(x) :取绝对值
divmod(x,y) :同时输出商和余数
例:divmod(10,3),结果为(3,1)
pow(x,y) :幂运算
pow(x,y[,z]) :x,y幂运算后对z取余 #方括号内的东西表示可省略,省略后就是幂运算
例:想计算3的3的99次方的后四位
pow(3,pow(3,99),10000)
round(x[,d]) :四舍五入,省略d就是四舍五入成整数
max(x1,x2...xn) :取最大值
min(x1,x2...xn) :取最小值
int(x) :取整运算,直接舍弃小数部分 #x可以为float类型,也可以为字符串
float(x) :变成浮点数 #x可以是整数和字符串
complex(x) :变成复数
问题:天天向上的力量
1.一年365天,每天进步千分之一,累计进步多少呢?
一年365天,每天退步千分之一,累计退步多少呢
pow(1.001,365) #1.44
pow(0.999,365) #0.69
2.一年365天,每天进步千分之5或者百分之1,累计进步多少呢?
一年365天,每天退步千分之5或者百分之1,累计退步多少呢?
dayfactor=0.005或者0.01 #用变量的好处
pow(1+dayfactor,365)
pow(1-dayfactor,365)
3.工作日进步
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.在工作如要努力到什么水平才能达到跟每天努力1%相同的效果
笨办法试错
def dayUP(dayfactor): #定义一个函数
dayup=1
for i in range(365):
if i%7 in [6,0]:
dayup=dayup*(1-dayfactor)
else
dayup=dayup*(1+dayfactor)
return dayup
df=0.01
while dayUP(df)<37.78: #while循环
df+=0.001
print("工作日的努力参数是:{:.3f}".format(df))
字符串类型及其操作
-字符串类型的表示
-字符串切片的高级用法
-字符串操作符
-字符串处理函数
-字符串处理方法
-字符串类型的格式化
1.字符串类型的表示
一对单引号或者一对双引号表示一行字符串
三对单引号或者三对双引号可以表示多行字符串
\ 是转义符,转义符后的字符表示特定字符的本意,如\“表示”本身
\b 回退
\n 换行
\r 回车(光标移动到当前行的行首)
注意:python 并没有提供真正的多行注释方法,三对单引号或者三对双引号可以用于注释是因为它本身是个字符串,但是我们并没有给这个字符串赋值或进行任何操作,其作用相当于注释。
若字符串中想要单引号或者双引号作为字符,则字符串相应的应该由双引号或者单引号表示
若字符串中既希望出现单引号字符有希望出现双引号字符,则字符串由三对单或双引号表示
2.字符串切片的高级用法
可以使用[M:N:K]根据步长K切片
<字符串>[M:N],M缺失表示至开头,N缺失表示至结尾
<字符串>[::-1],这里M,N缺失,K为-1,表示逆向的字符串
3.字符串操作符
x+y : 连接x、y
n*x :复制n次字符串x
x in s :如果x是s的子串,返回True,否则返回False
4.字符串处理函数
len(x) :返回字符串长度
str(x) :将任何类型变换成字符串类型 #与eval作用相反
hex(x)和oct(x) :返回x的十六进制或者八进制小写形式的字符串
例:hex(425) #0x1a9
oct(425) #0o651
chr(u) :u为Unicode编码,返回其对应的字符 #9800~9812代表十二星座的字符表示
ord(x) :x为字符,返回对应的Unicode编码
注意:python中使用的是Unicode编码,因此python支持各种语言
5.字符串处理方法 #注意方法和函数的区别,方法是某个对象提供的功能,必须以a.b的形式使用
.lower()/.upper :将整个字符串变成小写/大写
.split(sep) :用sep来分隔字符串,并返回一个列表类型
例如 "A,B,C".split(",") #['A','B','C']
.count(sub) :返回字串sub在字符串中出现的次数
.replace(old,new) :将所有old子串变成new子串
.center(width[,fillchar]) :字符串根据宽度width居中,fillchar可选
例如 "python".center(20,"=") #'=======python======='
.strip(chars) :去掉字符串两侧的所有chars字符
例如 "= python= ".strip(" =np")结果为"ytho"
.join(iter) :在iter遍历除最后元素外每个元素后都增加一个str
例如 ",".join("12345") #"1,2,3,4,5"
6.字符串类型的格式化
格式化是对字符串进行格式表达的方法
字符串格式化使用.format()方法,用法如下:
<模板字符串>.format(<逗号分隔的参数>)
槽:占位信息符,只在字符串中有用,用{}表示,字符串中的槽的默认顺序从0开始,每一个槽中添加的内容与.format中对应的参数是一致的,槽中也可以写数字,这个数字表面对应format中的第几个参数。
槽内部对格式化的配置方式:
{<参数序号>:<格式控制标记>}
python提供了6种格式控制标记,分为2组
<填充><对齐><宽度>
例如:"{0:=^20}".format("PYTHON") #0表示format中第0个参数,=表示填充字符
# ^ 表示居中对齐,20表示宽度
# '=======PYTHON======='
其中 > 表示右对齐, 不写默认左对齐
<,><.精度><类型>
<,> 数字的千位分隔符
<.精度> 浮点数小数精度 或 字符串最大输出长度
<类型>
整数类型 :b,c,d,o,x,X
-b:二进制
-c: unicode对应的字符
-d: 十进制
-o: 八进制
-x: 十六进制
-X: 大写的十六进制
浮点数类型: e,E,f,%
-e: e形式科学计数法
-E: E形式科学计数法
-f: 通常的形式表示浮点数
-%: 以百分号表示浮点数
例:"{0:,.2f}".format(12345.6789) # '12,345.68'
time库的使用
1.time库:time库是python中处理时间的标准库
2.time库中的函数
-时间获取: time() ctime() gmtime()
time() :获取当前时间戳,时间戳就是指当前系统中表示时间的一个浮点数,是从1970年1月1日00:00开始到当前为止的一个以秒为单位数字
ctime() :返回容易被人类读取的时间字符串
gmtime() :返回一个计算机程序可以处理的struct_time时间格式
time.struct_time(
tm_year=2020,
tm_mon=1,
tm_mday=26,
tm_hour=13,
tm_min=32,
tm_sec=16,
tm_wday=4,
tm_yday=26,
tm_isdst=0
)
-时间格式化: strftime(tpl,) strptime()
strftime(tpl,ts) :将时间变成 一段字符串 # str-format-time
tpl:格式化的模板字符串参数,用来定义输出效果
ts:计算机内部的时间类型的变量(struct_time)
例:t=time.gmtime()
time.strftime("%Y-%m-%d %H:%M:%S",t) # '2018-01-26 12:55:20'
strptime(str,tpl) :将字符串变成可供计算机内部操纵的struct_time类型时间 # str-parse-time
str:字符串格式的时间值
tpl:格式化的模板字符串,用来定义输入效果
例如:timeStr="2018-01-26 12:55:20"
time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
得到的time_struct
(
tm_year=2018,
tm_mon=1,
tm_mday=26,
tm_hour=12,
tm_min=55,
tm_sec=20,
tm_wday=4,
tm_yday=26,
tm_isdst=0
)
-程序计时: sleep(s) perf_counter()
sleep(s) 让程序休眠s秒时间,s单位是秒,可以是浮点数
perf_counter() 返回一个CPU级别的精确时间计数值(float),单位为秒,这个计数值的起点不确定(不一定从0开始),因此经常调用这个函数两次取其差值
模拟文本进度条
代码如下:
#TextProBarV1
import time
scale=50
print("执行开始".center(scale//2,"-"))
start=time.perf_counter()
for i in range(scale+1):
a='*'*i
b='.'*(scale-i)
c=(i/scale)*100
dur=time.perf_counter()-start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="")
time.sleep(0.1)
print("\n执行结束".center(scale//2,"-"))
文件进度条的不同设计函数