从零开始学Python(三)基本数据类型

思维导图:

python scheduler 定点 python 定点数_浮点数

一、数字类型及操作

1、整数类型:与数学中的整数概念一致

①可正可负,没有取值范围限制
 ②pow(x,y),计算x^y
 ③4种进制表示形式:十进制,二进制(以0B或0b开头),八进制(以0O或0o开头),十六进制(以0X或0x开头)


2、浮点数类型:与数学中实数的概念一致

(1)精度
 ①带有小数点及小数的数字
 ②浮点数取值范围和小数精度都存在限制,但常规计算可忽略
 ③取值范围数量级约-10308至10308,精度数量级10^(-16)
 (注:浮点数间运算存在不确定尾数,不是bug。Python中使用53位二进制表示小数部分。)
 (2)round()函数:解决浮点数间运算不确定尾数问题
 -round(x, d):对x四舍五入,d是小数截取位数。
 浮点数间运算及比较,用round()函数辅助。
 (3)浮点数可以采用科学计数法表示
 使用字母E或e作为幂的符号,以10为基数,格式为<a>e<b>,表示a*(10^b)

3、复数类型:与数学中的复数概念一致

-z.real获得实部 z.imag获得虚部

4、数值运算操作符

(1)操作符是完成运算的一种符号体系
 +加,-减,*乘,/除(产生浮点数结果),//整数除(求整数商)
 +x, x本身;-y, y的负值;x%y,余数;x**y,x的y次幂。
 (2)二元操作符有对应的增强赋值操作符
 x+=y; x-=y; x*=y; x/=y; x//=y; x%=y; x**=y
 (3)数字类型的关系:类型间可以进行混合运算,生成结果为“最宽”类型
 三种类型存在一种逐渐“扩展”或“变宽”的关系:整数–浮点数–复数

5、数值运算函数:一些以函数形式提供的数值运算功能

①abs(x),绝对值
 ②divmod(x,y),商余,(x//y, x%y),同时输出商和余数
 ③pow(x,y[,z]) 幂余,(x**y)%z,其中z参数可省略。
 ④round(x[,d]),四舍五入,d是保留小数位数,默认为0
 ⑤max(x1,x2,…,xn),最大值,n不限;最小值min()函数同
 ⑥int(x),将x变成整数,舍弃小数部分(int(“123”)结果为123)
 ⑦float(x),将x变成浮点数,增加小数部分(float(12)结果为12.0)
 ⑧complex(x),将x变成复数,增加虚数部分

二、实例:天天向上的力量

1、千分之一的力量:每天提升千分之一,持续一年

#DayDayUpQ1.py
dayup = pow(1.001, 365)
daydown = pow(0.999, 365)
print("向上:{:.2f}, 向下:{:.2f}".format(dayup, daydown))

2、千分之五和百分之一的力量:每天提升千分之五,持续一年

#DayDayUpQ2.py
dayfactor = 0.005
dayup = pow(1+dayfactor, 365)
daydown = pow(1-dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))

使用变量的好处:一处修改即可
3、工作日的力量:工作日提升1%,周末下降1%

#DayDayUpQ3.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、工作日的努力:工作日应如何努力,才能抵得上不休息

#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))

三、字符串类型及操作

1、字符串类型的表示

(1)之前的知识:由0个或多个字符组成的有序字符序列。
 ①字符串由一对单引号或一对双引号表示
 ②字符串是字符的有序序列,可以对其中的字符进行索引。
 (2)字符串有2类共4种表示方法
 ①由一对单引号或双引号表示,仅表示单行字符串
 ②由一对三单引号或三双引号表示,可表示多行字符串(可以当作注释来用)
 (3)字符串的序号:正向递增序号和反向递减序号
 (4)字符串的使用:使用[]获取字符串中一个或多个字符
 ①索引:返回字符串中单个字符 <字符串>[M]
 ②切片:返回字符串中一段字符子串 <字符串>[M:N]
 ③字符串切片高级用法:使用[M:N:K]根据步长对字符串切片。
 <字符串>[M:N],M缺失表示从开头,N缺失表示至结尾
 <字符串>[M:N:K],根据步长K对字符串切片
 (想使字符串倒转可用[::-1])
 (5)字符串的特殊字符:转义符
 ①转义符表达特定字符的本意
 ②转义符形成一些组合,表达一些不可打印的含义
 “\b”回退,“\n”换行(光标移动到下行首),“\r”回车(光标移动到本行首)

2、字符串操作符

①x + y ,连接两个字符串x和y
 ②n * x 或x * n,复制n次字符串x
 ③x in s,如果x是s的子串,返回True,否则返回False

3、字符串处理函数

①len(x) 长度,返回字符串x的长度
 ②str(x) 任意类型所对应的字符串形式(与eval()函数对应)
 ③hex(x)或oct(x) 整数x的十六进制或八进制小写形式字符串
 ④chr(u) u为Unicode编码,返回其对应的字符
 ⑤ord(x) x为字符,返回其对应的Unicode编码
 (Unicode编码:统一字符编码,覆盖几乎所有字符的编码方式。从0到1114111(0x10FFFF)空间,每个编码对应一个字符。Python字符串中每个字符都是Unicode编码字符。
 有趣的例子:10004是√的编码,金牛座符号编码是9801)

4、字符串处理方法

①str.lower()或str.upper() 返回字符串的副本,全部字符小写/大写。
 ②str.split(sep==None) 返回一个列表,由str根据sep被分隔的部分组成。
 ③str.count(sub) 返回子串sub在str中出现的次数。
 ④str.replace(old, new) 返回字符串str副本,所有old子串被替换为new
 ⑤str.center(width[,fillchar]) 字符串str根据宽度width居中,fillchar可选
 ⑥str.strip(chars) 从str中去掉在其左侧和右侧chars中列出的字符
 ⑦str.join(iter) 在iter变量除最后元素外每个元素后增加一个str

5、字符串类型的格式化

(1)格式化是对字符串进行格式表达的方式

字符串格式和使用.format()方法,用法如下:

<模板字符串>.format(<逗号分隔的参数>)

(2)槽

python scheduler 定点 python 定点数_浮点数_02


python scheduler 定点 python 定点数_浮点数_03

槽内部对格式化的配置方式{<参数符号>:<格式控制标记>}

python scheduler 定点 python 定点数_浮点数_04


①填充、对齐、宽度:

例:>>>”{0:=^20}”.format(“PYTHON”)

输出为’=======PYTHON=======’

②<,><.精度><类型>:数字

四、time库的使用

1、time库基本介绍:time库是Python中处理时间的标准库。

(1)可用于:①计算机时间的表达。

②提供获取系统时间并格式化输出功能。

③提供系统级精确计时功能,用于程序性能分析。

import time
 time.<b>()

(2)time库包括三类函数

①时间获取:time() ctime() gmtime()
 ②时间格式化:strftime() strptime()
 ③程序计时:sleep() perf_counter()

2、时间获取

(1)time(),获得当前时间戳,即计算机内部时间值,浮点数(从1970.01.01开始计时的秒数)

(2)ctime(),获取当前时间并以易读方式表示,返回字符串

(如’ Thu Mar 19 21:49:47 2020’)

(3)gmtime(),获取当前时间,表示为计算机可处理的时间格式。

3、时间格式化

(1)将时间以合理的方式展示出来

①格式化:类似字符串格式化,需要有展示模板

②展示模板由特定的格式化控制符组成

(2)strftime()方法:strftime(tpl, ts),tpl是格式化模板字符串,用来定义输出效果,ts是计算机内部时间类型变量

(3)时间格式化:

python scheduler 定点 python 定点数_浮点数_05

python scheduler 定点 python 定点数_字符串_06

(4)strptime(str,tpl),str是字符串形式的是兼职,tpl是格式化模板字符串,用来定义输出效果
4、程序计时应用:程序计时指测量起止动作所经历时间的过程
(1)perf_counter():返回一个CPU级别的精确时间计数值,单位为秒,由于这个计数值起点不确定,连续调用差值才有意义。
(2)sleep(s):s是拟休眠的时间,单位是秒,可以是浮点数。

五、实例:文本进度条

1.简单的开始

#TextProBarV1.py
import time
scale = 10
print("------执行开始------")
for i in range(scale + 1):
    a = '*' * i
    b = '.' * (scale - i)
    c = (i/scale) * 100
    print("{:^3.0f}%[{}->{}]".format(c,a,b))
    time.sleep(0.1)
print("------执行结束------")

2.单行动态刷新

#TextProBarV2.py
import time
for i in range(101):
    print("\r{:3}%".format(i),end="")
    time.sleep(0.1)

3.实例完整效果

#TextProBarV3.py
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,'-'))

举一反三:文本进度条的不同设计函数

python scheduler 定点 python 定点数_浮点数_07