python基本数据类型
数字类型及操作
与数学中整数的概念一致。有四种进制表示形式。
- 十进制:1010,99-217
- 二进制:0b010,-0B101
- 八进制:0o123,-0O456
- 十六进制:0x9a,-0X89
- pow(x,y[,z])函数:计算 x 想算多大算多大,z 可省略,对 z 做模运算。
1 | pow(2,100) |
浮点类型
与数学中实数的概念一致。
- 带有小数点及小数的数字。
- 浮点数取值范围和小数精度都存在限制,但常规计算可忽略。
浮点数间运算存在不确定尾数,不是 bug,主要是由于在计算机中所有数字都是用二进制来表示,二进制表示的长度非常长的时候会截取前 53 位的字符,运算后再转换为十进制的过程中会有偏差
这就导致了一个问题:
1 | >>>0.1+0.2 == 0.3 |
为了解决这个问题,可以使用 round:
1 | >>>round(0.1+0.2,1) == 0.3 #四舍五入函数,有x、d两个参数,x表示你要四舍五入的那个数,d表示四舍五入后取几位小数保留。 |
在浮点数之间运算和比较的时候,用 round 函数辅助。因为不确定尾数一般发生在 10 的-16 次方这样的地方,也就是说它并不是在小数的前几位,而是在十进制的大概 16 位上下产生的,所以 round 函数非常有效。
浮点数可以采用科学计数法表示
使用字母 e 或 E 作为幂的符号,以 10 为基数,格式如下:
e 表示 a*10 的 b 次方
例如:
4.3e-3 为 0.0043
9.6e5 为 960000.0
数值运算操作符
- -
- -
- -
- /
- // 整数除
- % 余数,模运算 10%3 =1
- xy x 的 y 次方,当 y 是小数时,开方运算,10 0.5 是 根号 10
数值运算函数
- abs(x) 求 x 的绝对值 abs(-10.01)为 10.01
- divmod(x,y) 商余,同时输出商和余数 divmod(10,3)为(3,1);
- round(x[,d]) 四舍五入,d 为小数点位数
- max(x1,x2,x3…) 最大值
- min(x1,x2,x3…) 最小值
- int(x) 将 x 变成整数,舍弃小数部分
- float(x) 将 x 变成浮点数,增加小数部分。
字符串类型
三个单引号也是字符串的一种表示,如果这个字符串没有赋值给变量,或者没有进行操作,那就可以当注释使用,python 中并没有提供多行注释的表示方式。
切片
切片使用[M:N]来表示,其中 M 和 N 都不是必须的,M 缺失表示至开头,N 缺失表示至结尾。
根据步长对字符串切片使用的是[M:N:K],比如
1 | "0一二三四五六七八九十"[1:8:2] |
结果是”一三五七”
如果你想从后往前来,有个小技巧:
1 | "0一二三四五六七八九十"[::-1] |
MN 都没有就表示至开头和至结尾,步长为-1 表示从后往前逐一取出。
操作符
x + y 连接两个字符串
x * n 复制 n 次字符串 x
x in s x 是否在 s 中,返回 True,否则 False
字符串处理函数
len(x) 返回 x 长度
str(x) 转换为字符串 str(123)为”123” , str([1,2]) 为 “[1,2]” 与 eval()相反
hex(x) 或 oct(x) 转换成 16 进制或 8 进制
chr(u) u 为 Unicode 编码,返回对应的字符
ord(x) x 为字符,返回对应的编码
字符串处理方法
str.lower()和 str.upper() 转换大小写
str.split(sep=None) 返回一个列表,用 sep 分割。”ABC”.split(“,”) 为[“A”,”B”,”C”]
str.count(sub) 返回 sub 在 str 中出现的次数 “abc”.count(“a”) 结果为 1
str.replace(old,new) 返回 str 副本,所有 old 被替换为 new “python”.replace(“n”,”n1”)结果为”python1”
str.center(width[,fillchar]) str 根据 width 居中,fillchar 可选,表示空白地方的填充 “python”.center(20,”=”) 结果为”====python====”
str.strip(chars) 去除 str 左右 chars 列出的字符 “= python”.strip(“ =np”) 结果为”ytho”
str.join(iter) 在 iter 变量每个元素后面增加一个 str “,”.join(“123”) 结果为 1,2,3
格式化
str.format() 格式化 需要用到槽,槽只在字符串中有用
1 | "{1}:计算机{0}的cpu占用率为{2}%".format("2020-10-10","C",10) //将format中的数据按槽的标记插入进去 |
格式控制:
: 引导符号
, 数字的千位分隔符
. 精度
1 | >>>"{0:=^20}".format("PYTHON") |
=号是填充符号,^表示居中对齐,将 format 中的第一个参数居中对齐,20 是输出宽度。 结果就是”====PYTHON====”
1 | >>>"{0:*>20}".format("BIT") |
*是填充符号,>是右对齐。结果为 “*************BIT”
1 | >>>"{:10}".format("BIT") |
结果是”BIT “
1 | >>>"{0:,.2f}".format(12345.6789) |
“12,345.68”
time 库的使用
是 python 中处理时间的标准库
- 计算机时间的表达
- 提供获取系统时间并格式化输出功能
- 提供系统级精确计时功能,用于程序性能分析
使用方法:
import time
time.()
time 库包括三类函数
- 时间获取 time() ctime() gmtime()
- 时间格式化 strftime() strptime()
- 程序计时 sleep() perf_counter()
时间获取
time():获取当前时间戳,即计算机内部时间值,浮点数 16252152731.123123
ctime(): 获取当前时间并以易读方式表示,返回字符串 Fri Jan 26 12:11:20 2020
gmtime():获取当前时间,表示为计算机可处理的时间格式,叫做 struct_time 格式。
时间格式化
格式化字符串:
%Y:年份
%m:月份
%B:月份名称
%b:月份名称缩写
%d:日期
%A:星期
%a:星期缩写
%H:小时(24h)
%I:小时(12h)
%p:上/下午
%M:分钟
%S:秒
格式化函数
strftime(tpl,ts):tpl 是格式化模板字符串,用来定义输出结果,ts 是计算机内部时间类型变量
1 | >>>t=time.gmtime() |
strptime(str,tpl):与 strftime()是互补关系,str 是字符串形式的时间值,tpl 是格式化模板字符串
1 | >>>timeStr = '2020-10-02 12:22:20' |
程序计时
perf_counter(): 返回一个 cpu 级别的精确时间计数值,单位为秒,由于这个计数值起点不确定,连续调用差值才有意义。
sleep(s): s 拟休眠的时间,单位秒,可以是浮点数。
1 | >>>def wait(): |
文本进度条例子
- 采用 sleep 模拟一个持续的进度。
1 | # 文本进度条 |
升级完整版:
1 | # 文本进度条完整 |