一、数字类型及操作
(1)整数类型
-
与数学中整数的概念一致,可正可负,没有取值范围限制
-
pow(x, y) 函数,计算 x ^ y (想算多大能算多大)
-
4种进制表示形式:
1.十进制:1024 、 98 、 -127 2.二进制:0b或者0B开头:0b011,-0B1011 3.八进制:以0o或0O开头:0o124,0O5567 4.十六进制:以0x或者0X开头:0x9a,-0X87
(2)浮点数类型
- 与数学中实数的概念一致,带有小数点及小数的数字,浮点数取值范围和小数精度都存在限制,但是在常规计算中可忽略,因为取值范围数量级约 -10^308 ~ 10^308 ,精度的数量级是10^(-16)。
- 浮点数之间运算存在不确定尾数,不是bug
- 使用 round 函数,round(x, d) 对 x 进行4舍5入,d是小数截取位数。浮点数比较运用 round() 函数辅助,不确定尾数一般发生在 10^(-16) 左右,round() 十分有效。
- 浮点数可以采用科学计数法来表示,使用 e 或 E 作为幂的符号,以 10 为幂数, < a >e< b >,表示 a * 10^b,如 4.3e-3, 9.6E5
(3)复数类型
- 与数学中的复数的概念一致
- a + bj
(4)数值运算操作符
-
+加、-减、*乘、/除(除的运算结果是浮点数类型,10/3 = 3.3333333333333335)
-
x // y 整数除,x 与 y的整数商,10 // 3 = 3
-
+x 表示 x 本身,-x 表示 x 的负值
-
x % y 取余数,模运算 10 % 3 = 1
-
x**y 幂运算,x 的 y 次幂,当 y 是小数时,开方运算,10* * 0.5 = √10
-
二元操作符有对应的增强赋值操作符
x op = y op为二元操作符 x += y x -= y x*=y x /= y x //= y x %= y x ** =y
(5)数字类型的关系
- 类型间可进行混合运算并生成结果为“最宽”类型
- 逐渐变宽 整数------> 浮点数------>复数
(6)数值运算函数
- abs(x) 求绝对值
- divmod(x, y) 商余,(x // y, x % y) 同时输出商和余数,divmod(10, 3) 结果为 (3,1)
- pow(x, y [,z]) 幂余,(x ** y) % z
- round(x, [,d]) 四舍五入,d 是保留小数位数,默认是 0
- max(x1, x2, x3…xn) 最大值
- min(x1, x2, x3…xn) 最小值
- int(x) 将 x 变为整数,舍弃小数部分,int(123.45) 为 123,int(“123”) 为 123
- float(x) 将 x 变为浮点数,增加小数部分,float(12) 为 12.0,float(“1.34”) 为 1.34
- complex(x) 将 x 变为复数,增加虚数部分,complex(4) 结果为 4+0j
二、实例3:天天向上的力量
(1)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/7/31 18:01
# @Author : 小白的Soda
# @File : DayDayUp01.py
# @Software: PyCharm
dayUp = pow(1.001, 365)
dayDown = pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayUp, dayDown))
(2)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/7/31 18:01
# @Author : 小白的Soda
# @File : DayDayUp02.py
# @Software: PyCharm
dayFactor = 0.005
dayUp = pow(1 + dayFactor, 365)
dayDown = pow(1 - dayFactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayUp, dayDown))
(3)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/7/31 18:01
# @Author : 小白的Soda
# @File : DayDayUp03.py
# @Software: PyCharm
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)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/7/31 18:01
# @Author : 小白的Soda
# @File : DayDayUp04.py
# @Software: PyCharm
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.09
print("工作日的努力参数是:{:.3f}".format(dayfactor))
三、字符串类型及操作
(1)字符串
由0个或者多个字符组成的有序字符序列
-
字符串由一对单引号或者双引号表示
“请输入带有符号的温度值:” 或者 ‘C’ -
字符串是字符的有序序列,可以对其中的字符进行索引
“请输入带有符号的温度值:” 中 "请"是第0个字符 -
字符串有2类共4种表示方式,使得单引号和双引号在字符串中的出现变得很好处理
-
字符串切片高级用法:
使用 [M : N : K] 根据步长对字符串切片 - <字符串>[M :N] 中M缺失表示至开头,N缺失表示至结尾 - <字符串>[M:N:K] 根据步长 K 对字符串切片 "零一二三四五六七八九十"[1:8:2] 结果是 "一三五七" "零一二三四五六七八九十"[::-1] 结果是 "十九八七六五四三二一零"
-
转义符 \ :转义符表达特定字符的本意,也可形成一些组合,表达一些不可打印的含义
"\b" 回退 "\n" 换行,光标移动到下行首 "\r" 回车,光标移动到本行首
(2)字符串操作符
由0个或者多个字符组成的有序字符序列
- x + y :连接两个字符串 x 和 y
- nx 或者 xn:赋值 n 次字符串 x
- x in s:如果x是s的字串,则返回True,否则返回False
(3)字符串处理函数
一些以函数形式提供的字符串处理功能
- len(x) 长度,返回字符串x的长度
- str(x) 任意类型x所对应的字符串形式
- hex(x)或者oct(x) 整数x的十六进制或者八进制小写形式字符串
- chr(u) u为Unicode编码,返回其对应的字符
- ord(x) x为字符,返回其对应的Unicode编码
Python的字符串编码方式为:Unicode
(4)字符串处理方法
“方法”在编程中是一个专有名词。
- “方法”特指 < a >.< b >() 风格中的函数 < b >()
- 方法本身也是函数,但与 < a > 有关,< a >.< b >() 风格使用
- 字符串及变量也是 < a >,存在一些方法
- str.lower() 或者 str.upper() 返回字符串的副本,全部字符小写 / 大写
- str.split(seb = None) 返回一列表,由 str 根据 sep 被分隔的部分组成
“A,B,C”.split(",") 结果 [“A”,“B”,“C”] - str.count(sub) 返回字串在str中出现的次数
- str.replace(old, new) 返回字符串str副本,所有old字串替换为new
“Python”.replace(“n”,“n123.io”) 为 “Python123.io” - str.center(width [,fillchar]) 字符串str根据宽度width居中,fillchar 可选
- str.strip(chars) 从str中去掉在其左侧和右侧chars中的字符
“= python= “.strip(” =np”) 结果为“ytho” - str.join(iter) 在iter变量除最后元素外每个元素后增加一个str
“,”.join(“12345”) 结果为“1,2,3,4,5”
(5)字符串类型的格式化
格式化是对字符串进行格式化表达的方式
-
字符串格式化使用.format() 方法,用法如下
<模板字符串>.format(<逗号分隔的参数>) 槽 :{ } : 只在字符串中有效
四、模块2:time库的使用
(1)time库
-
是Python中处理时间的标准库
-
计算机时间的表达
-
提供获取系统时间并格式化输出功能
-
提供系统级精确计时功能,用于程序性能分析
-
使用:
import time time.<>()
(2)time库包括三类函数
- 时间获取:time() 、ctime() 、gmtime()
- 时间格式化:strftime() 、strptime()
- 程序计时:sleep() 、perf-counter()
(3)时间获取
- time() ------ time.time() 获取当前的时间戳,浮点数,格林威治历,秒数
- ctime() ------ time.ctime() 获取当前时间并以易读方式表示返回字符串
- gmtime() ------ time.gmtime() 获取当前时间,并表示为计算机可处理格式
(4)时间格式化
将时间以合理的方式展示出来
-
格式化:类似字符串格式化。需要展示模板
-
展示模板由特定的格式化控制符组成
-
strftime() 方法:
strftime(tql, ts) tql是格式化模板字符串,用来定义输出效果,ts是计算机内部时间类型变量 >>> t = time.gmtime() >>> time.strftime("%Y-%m-%d %H:%M:%S", t) >>> '2018-01-26 12:55:20' %Y 年份 0000-9999 %m 月份 01-12 %B 月份名称 January-December %b 月份名称缩写 Jan-Dec %d 日期 01-31 %A 星期 Monday-Sunday %a 星期缩写 Mon-Sun %H 小时(24) 00-23 %I 小时(12) 01-12 %p 上 /下午 AM/PM %M 分钟 00-59 %S 秒 00-59
(5)程序计时应用
- 程序计时指测量起止动作的经历时间的过程
- 测量时间:perf-counter() 返回一个cpu级别精确时间计数值,单位:s
- 产生时间:sleep(s) s拟休眠的时间,可以是浮点数
五、实例4:文本进度条
(1)简单版本
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/8/1 15:05
# @Author : 小白的Soda
# @File : TextProBarV1.py
# @Software: PyCharm
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)文本进度条单行动态刷新
- 刷新的本质:用后打印的字符覆盖之前的字符
- 不能换行
- 要能回退
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/8/1 15:05
# @Author : 小白的Soda
# @File : TextProBarV2.py
# @Software: PyCharm
import time
for i in range(101):
print("\r{:3}%".format(i), end="")
time.sleep(0.1)
效果:
(3)完整效果
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/8/1 15:05
# @Author : 小白的Soda
# @File : TextProBarV3.py
# @Software: PyCharm
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, '-'))
效果: