Python基础学习笔记 week03
3.1数字类型及操作
整数
- pow(x, y) 计算x的y次幂
4种进制表示
- 十进制
- 二进制,以0b(B)开头:0b010, -0B101
- 八进制,以0o(O)开头:0o123, -0O456
- 十六进制,以0x(X)开头:0x9a, -0X89
浮点数
取值范围-10^308 到10^308, 精度数量级10^(-16)
浮点数间运算存在不确定尾数,不是bug
round(x, d):对x四舍五入,d小数截取位数
浮点数间运算及比较用round()函数
科学计数法
<a>e<b> 表示a*10^b
【eg】 4.3e-3 表示4.3*10^-3
复数
z=3.33+5j
z.real() 获得实部
z.img() 获得虚部
数值运算操作符
+ - * /(与数学运算一致) //(整除)
+x 表示x本身
-y 表示y的复制
X % y 表示余数,模运算,10%3结果为1
X ** Y 幂运算,x的y次幂,x^y; 当y是小数时,开方运算 10**0.5结果是根号10
类型间可以进行混合运算,生成结果为“最宽”类型
整数->浮点数->复数
数值运算函数
abs(x) 绝对值,x的绝对值
divmod(x, y) 商余,(x//y, x%y),同时输出商和余数;divmod(10, 3)结果为(3, 1)
pow(x, y[, z]) 幂余,(x**y%z),[…]表示参数z可以省略;pow(3, pow(3, 99), 10000)结果为4587
round(x[, d]) 四舍五入,d是保留小数位数,默认值为0
max(x1, x2,…, xn) 最大值,返回n个数中的最大值,n不限
min(x1, x2,…, xn) 最小值,返回n个数中的最小值,n不限
- 类型转换函数
int(x) 将x变成整数,舍弃小数部分
float(x) 将x变成浮点数,增加小数部分
complex(x) 将x变成复数,增加虚部部分
天天向上的力量
- 每天进步1%
(1.01)^365 - 每天退步1%
(0.99)^365
- 1%。的力量
- 进步 1.001^365
- 退步 0.999^365
dayup = pow(1.001, 365)
daydown = pow(0.999, 365)
print(“向上:{:.2f}, 向下:{:.2f}”.format(dayup, daydown))
- 5%。 or 1%
- 进步 1.005^365 1.01^365
- 退步 0.995^365 0.99^365
-
工作日的力量
一年365天,一周5个工作日,每天进步1%;2个休息日,每天退步1% -
工作日的努力
工作日模式要努力到什么水平,才能与每天努力1%一样?
A君:一年365天,每天进步1%,不停歇
B君:一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?
3.3字符串类型及操作
-
字符串类型的表示
字符串由一对单引号或一对双引号表示
字符串是字符的有序序列,可以对其中的字符进行索引,索引从0开始 -
字符串有2类四种表示方式
由一对单引号或双引号表示,仅表示单行字符串
由一对三单引号或三双引号表示,可表示多行字符串
真相:Python并没有真正的多行注释,在三单(双)引号内的内容即为多行文本,如果没有将他复制给某个变量,可以用作注释
字符串中出现双引号,则整个字符串外围使用单引号,中间出现的双引号会被当做字符来处理;反之也成立
如果字符串中既有单引号又有双引号,那么字符串外围使用三个单引号,中间的单双引号被视作字符
字符串的序号
正向递增序号
反向递减序号
字符串的使用
使用[]获取字符串中一个或多个字符
- 索引:返回字符串中单个字符 <字符串>[M]
- 切片:返回字符串中一段字符子串 <字符串>[M:N]
M,N为 正向递增序号 or 反向递减序号
字符串切片的高级用法
- <字符串>[M:N],M缺失表示至开头,N缺失表示至结尾
- <字符串>[M:N:K],根据步长K对字符串切片
eg “0一二三四五六七八九十” [1:8:2] 结果是 “一三五七”
技巧,字符串取反 [::-1]
字符串的特殊字符
转义符 \
- 转义符表达特定字符的本意
eg “这里有个双引号(”)" 结果为 这里有个双引号(") - 转义符形成一些组合,表达一些不可打印的含义
"\b"回退 "\n"换行(光标移动到下行首) "\r"回车(光标移动到本行首)
字符串操作符
x + y 连接两个字符串x和y
n * x 或 x * n 复制n次字符串x
x in s 如果x是s的子串,返回True,否则返回False
eg.星期字符串 1-星期一 …… 3-星期三
字符串处理函数
len(x) 长度,返回字符串x的长度
str(x) 任意类型x所对应的字符串形式
hex(x) 或 oct(x) 整数x的十六进制或八进制小写形式字符串
chr(u) u为Unicode编码,返回其对应的字符
ord(x) x为字符,返回其对应的Unicode编码
Unicode
- 统一字符编码,即覆盖几乎所有字符的编码方式
- 从0到1114111(0x10FFFF)空间,每个编码对应一个字符
- Python字符串中每个字符都是Unicode编码字符
字符串处理方法
- "方法"特指<a>.<b>()风格中的函数<b>()
- 方法本身也是函数,但与<a>有关,<a>.<b>()风格使用
- 字符串及变量也是<a>,存在一些方法
常用的8个字符串处理方法
常用的8个字符串处理方法 | |
---|---|
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中列出的字符,"= python= “.strip(” =np") 结果为 “ytho” |
str.join(iter) | 在iter变量除最后元素外每个元素后增加一个str |
“,”.join(“12345”) 结果为 “1,2,3,4,5” #主要用于字符串分隔等,格式化输出 |
字符串类型格式化
格式化是对字符串进行格式表达的方式
- 字符串格式化使用.format()方法
“{}” 槽,占位信息符,只在字符串中有用
槽 + format = 格式化
槽内部格式化的配置方式
{<参数序号>:<格式控制标记>}
: 引导符号
前三位:填充 对齐 宽度 =》 给出宽度,对齐方式,空余填充
: <填充> <对齐> <宽度>
引导符号 用于填充的单个字符 < 左对齐 槽设定的输出宽度
> 右对齐
^ 居中对齐
>>> "{0:=^20}".format("PYTHON")
'=======PYTHON======='
>>> "{0:*>20}".format("BIT")
'*****************BIT'
>>> "{:10}".format("BIT")
'BIT '
-
后三位:与数字有关
-
<,> <.精度> <类型>
引导符号 数字的千分位分隔符 浮点数小数精度 整数类型 b, c, d, o, x, X
或字符串最大输出长度 浮点数类型 e, E, f, %
>>> "{0:,.2f}".format(12345.6789)
'12,345.68
>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
'110101001,(表示不来),425, 651, 1a9, 1A9'
:.e 表示科学计数法
:.E 表示科学计数法
:.% 表示以百分号表示
3.4 模块2 time库的使用
时间获取 时间格式化 计时应用
import time()
time库是Python中处理时间的标准库
time库包括三类函数
- 时间获取: time() ctime() gmtime()
- 时间格式化: strftime() strptime()
- 程序计时: sleep() perf_counter()
time() 获取当前时间戳,即计算机内部时间值,浮点数
ctime() 获取当前时间并以易读方式表示,返回字符串
gmtime() 获取当前时间,表示为计算机可处理的时间格式
时间格式化:将时间以合理的方式展示出来
strftime(tpl, ts) tpl是格式化模板字符串,用来定义输出效果,ts是计算机内部时间类型变量
>>> t=time.gmtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S", t) #6个控制符
'2018-01-26 12:55:20'
%Y 年份
%m 月份
%B 月份名称
%b 月份名称缩写
%a 星期缩写
%H 小时24
%h 小时12
……
strptime将字符串转换为时间
程序计时
测量时间:perf_counter()
perf_counter()返回一个CPU级别的精确时间计数值,单位为秒
由于这个计数值起点不确定,连续调用差值才有意义
产生时间:sleep()
s拟休眠时间,单位是秒,可以是浮点数
>>> def wait():
time.sleep(3.3)
>>> wait()
#程序将等待3.3秒后退出
“文本进度条”
问题分析:
- 采用sleep()模拟一个持续的进度
单行动态刷新
刷新的本质:用后打印的字符覆盖之前的字符
不能换行:print()需要被控制
要能回退:打印后光标退回到之前的位置 \r 打印输出字符串前光标退回行首
文本进度条完整版