3 Python基本数据类型,3Python

发表时间:2020-12-25

3 Python基本数据类型

一、数字类型及操作

1.整数类型

①四种表示方式

在这里插入图片描述

②整数无大小限制

  • pow(x,y)函数:计算x的y次方

2.浮点数类型

①浮点数间运算存在不确定尾数

在Python语言中,小数部分由53位二进制来表示(约10^-16)

②round(x,d)函数:对x四舍五入,d是小数截取位数

  • 解决浮点数之间不确定尾数的问题
>>> 0.1+0.2==0.3
False
>>> round(0.1+0.2,1)==0.3
True

③浮点数可以采用科学计数法表示

  • 使用e或E作为幂的符号,以10为基数:e 表示a*10^b
  • [例]4.3e-3表示0.0043,9.6E5表示960000.0

3.复数类型

①"a+b j ":a是实部,b是虚部

  • .real():获得实部
  • .imag():获得虚部

4.数值运算操作符

在这里插入图片描述

在这里插入图片描述

二元操作符对应的增强赋值操作符

在这里插入图片描述

5.数值运算函数

在这里插入图片描述

在这里插入图片描述

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

Q1:千分之一的力量

在这里插入图片描述

#dayDayUp01.py  结果=>(向上:1.44,向下:0.69)
dayup=pow(1.001,365)
daydown=pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

Q2:千分之五和百分之一的力量

在这里插入图片描述

#dayDayUp02.py  结果=>(向上:6.17,向下:0.16)
dayfactor=0.005
dayup=pow(1+dayfactor,365)
daydown=pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

#dayDayUp02.py   结果=>(向上:37.78,向下:0.03)
dayfactor=0.01
dayup=pow(1+dayfactor,365)
daydown=pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

Q3:工作日的力量

-一年365天,一周五个休息日,每天进步1%

-一年365天,一周两个休息日,每天退步1%

#DayDayUpQ3.py  结果=>4.63
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("the power of workdays:{:.2f}".format(dayup))

Q4:工作日的努力

在这里插入图片描述

#DayDayUpQ4.py  答案=>0.019,函数的写法
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.字符串类型的表示

①表示方式

  • 单引号/双引号,仅表示单行字符串

  • 由一对三单引号或三双引号表示,可表示多行字符串

②序号(正向递增/反向递减)

在这里插入图片描述

③字符串索引 []

④字符串切片,使用[M:N:k]根据步长对字符串进行切片

  • <字符串>[M:N],M缺失表示到开头,N缺失表示到结尾
  • 逆序字符串:[::-1]

④转义符:\

2.字符串操作符

x + y :连接两个字符串x和y

x * n :将字符串x复制n次

x in s :判断x是否为s的子串,属于则返回true,否则返回false

Q:返回星期的字符串(输入1,返回星期一)
weekStr="星期一星期二星期三星期四星期五星期六星期天"
weekID=eval(input("请输入星期数字(1-7):"))
pos=(weekID-1)*3
print(weekStr[pos:pos+3])
#优化后
weekStr="一二三四五六天"
weekID=eval(input("请输入星期数字(1-7):"))
print("星期"+weekStr[weekID-1])

3.字符串处理函数

①len(x)

②str(x):将任意类型的x转换为字符串形式

③hex(x)或oct(x):整数x的十六进制或八进制形式字符串(小写)

④chr(x):将unicode编码u转换成其对应的字符

⑤ord(x):将字符x转换为unicode编码

4.字符串处理方法

① .lower()和 .upper():全部转换为小写或大写

② .split(sep):返回一个列表,由str根据sep被分隔的部分组成

③ .count(sub):返回子串sub在str中出现的次数

④ .replace(old,new):返回字符串副本,所有old子串被替换为new

⑤ .center(width,[,fillchar]):字符串根据width居中,fillchar可选择

>>> "python".center(20,"*")
'*******python*******'

⑥ .strip(chars):去掉在其左侧和右侧chars中列出的字符

>>> "= python= ".strip(" =np")
'ytho'

⑦ str.join(iter):在iter变量除最后元素外每个元素后加一个str

>>> ",".join("12345") #主要用于字符串分割
'1,2,3,4,5'

5.字符串类型的格式化

{ } 槽 .format

在这里插入图片描述

①填充、对齐、宽度

>>> #"="表示填充符号,"^"表示居中居中,"20"表示宽度
>>> "{0:=^20}".format("PYTHON")
'=======PYTHON======='

②千位分隔符、.精度、类型

Q1:千位分隔符,精度
>>> "{0:,.2f}".format(12345.6789)
'12,345.68
Q2:b输出二进制,c输出字符,d输出十进制,o输出八进制,x输出十六进制
>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
'110101001,Ʃ,425,651,1a9,1A9'

四、模块2:time库的使用

1.time库基本介绍

①是python中处理时间的标准库

  • 计算机时间的表达
  • 提供获取系统时间并格式化输出功能
  • 提供系统级精确计时功能,用于程序性能分析

②函数

  • 时间获取:time()、ctime()、gmtime()
  • 时间格式化:strftime()、strptime()
  • 程序计时:sleep(),perf_counter()

2.时间获取

① .time():获取时间戳,浮点数

② .ctime():获取当前时间并以易读方式表示,字符串

③ .gmtime():获取当前时间,表现为计算机可处理的时间格式

3.时间格式化

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

在这里插入图片描述

在这里插入图片描述

② .strptime(str,tpl):将字符串格式的时间值按照模板转换为计算机可读时间

4.程序计时应用

①程序计时:指测量起止动作所经历时间的过程(测量/产生时间)

② .perf_counter():测量时间,返回一个CPU级别精确时间计数值(秒)

③ .sleep(s):产生时间,让程序休眠s秒,可为浮点数

五、实例4:文本进度条

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("------执行结束------")

执行结果:

------执行开始------
 0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
------执行结束------

2.“文本进度条”的单行动态刷新

①刷新:用后打印的字符覆盖之前的字符

  • 不能换行:即print()函数需要被控制
  • 不能回退:打印后光标退回到之前的位置,使用\r
import time
for i in range(11):
    print("\r{:3}%".format(i),end="")
    time.sleep(0.1)

IDLE中运行结果(屏蔽了\r效果):

在这里插入图片描述

命令行运行:

在这里插入图片描述

3.“文本进度条”的实例完整效果

代码:

#005 TextProBar.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,'-'))

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dwOJ0Ubt-1608704118986)(img/image-20201214100040783.png)]

port 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,’-’))

运行结果:

在这里插入图片描述

在这里插入图片描述

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free