数字类型与操作

数字类型

  Python语言一共提供三种数据类型:整数型、实数型、复数型[1]

整数类型

  整数类型有四种进制表示:十进制(默认情况)、二进制(0b或者0B引导)、八进制(0o或者0O引导)、十六进制(0x或者0X引导)。一般认为整数类型的计算没有取值范围的限制。

浮点数类型

  浮点数类型表示带有小数的数值,小数部分可以是0,但是浮点数必须带有小数。浮点数形式下无法获得高精度运算结果,通过把浮点数转化成整数的方法能够实现浮点数的高精度计算。

复数类型

  复数表示为(a+bj),a是实数部分,b是虚数部分,后缀用j或者J来表示。复数类型中的实数部分和虚数部分的数值都是浮点数类型。

数字类型的操作

内置的数值运算操作符

运算符:+ - * / // % **[2]

整数与整数运算,结果是整数或者是浮点数;

整数与浮点数混合运算,结果是浮点数;

整数或浮点数与复数运算,结果是复数。

内置的数值运算函数

  1. abs(x)——x的绝对值;

  2. divmod(x,y)——输出为二元组形式:(x//y,x%y);

  3. pow(x,y[,z])——(x**y)%z,其中%z可以省略不运算;

  4. round(x[,ndigits])——对x四舍五入,保留ndigits位小数,默认为0;

  5. max(x_1 , x_2 , x_3……,x_n)——取一组数的最大值,n没有限定;

  6. min(x_1 , x_2 , x_3……,x_n)——取一组数的最小值,n没有限定;

内置的数字类型转换函数

  1. int(x)——将x转化成整数,x可以是浮点数或者是字符串;

  2. float(x)——将x转化成浮点数,x可以是整数或者是字符串;

  3. complex(re[,im])——生成一个复数,实部为re,虚部为im。re可以是整数、浮点数或者是字符串,im可以是整数或者浮点数但是不能是字符串。

字符串类型与操作

字符串类型

  字符串类型是字符的序列表示,可以由单引号、双引号或三引号构成。其中,单引号或者双引号的作用相同,嵌套使用时需要注意交叉使用;三引号可以表示单行或者多行字符串。

  input() 函数将用户输入的内容当作一个字符串类型;print() 函数可以直接打印字符串。字符串包括两种序号体系:正向递增序号和反向递减序号。如果字符串长度是L:正向递增需要以最左侧的序号为0,向右依次递增,最右侧的字符序号为L-1;反向递减需要以最右侧的序号为-1,向左依次递减,最左侧的字符序号为-L。

  “\”是一个特殊字符,在字符串中表示转义。\n 表示换行、\\表示反斜杠、\'表示单引号、\"表示双引号、\t表示水平制表符、\v表示垂直制表符。

字符串类型的操作

基本的字符串操作符

操作符 描述
x+y 连接两个字符串 x 和 y
x*n 或者 n*x 复制 n 次字符串 x
x in s 如果 x 是 s 的子字符串返回 true,否则返回 false
str[i] 索引,返回第 i 个字符
str[N:M] 切片,返回索引第 N-M 的字符,不包括 M

内置的字符串处理函数

函数 描述
len(x) 返回字符串 x 的长度
str(x) 返回任意类型的 x 所对应的字符串形式
chr(x) 返回 Unicode 编码 x 对应的单字符
ord(x) 返回单字符 x 对应的 Unicode 编码
hex(x) 返回整数 x 对应 16进制数的小写形式字符串
ost(x) 返回整数 x 对应 8进制数的小写形式字符串

内置的字符串处理方法

方法 描述
str.lower() 返回字符串 str 的副本,全部字符小写
str.upper() 返回字符串 str 的副本,全部字符大写
str.islower() 当 str 所有字符均小写时,返回 True;否则返回 False
str.isnumeric() 当 str 所有字符均数字时,返回 True;否则返回 False
str.isspace() 当 str 所有字符均空格时,返回 True;否则返回 False
str.endswith(suffix[,start[,end]]) str[start: end] 以 suffix 结尾返回 True;否则返回 False
str.startswith(prefix[,start[,end]]) str[start: end] 以 prefix 开头返回 True;否则返回 False
str.count(sub[,start[,end]]) 返回 str[start: end] 中 sub 子字符串出现的次数

字符串类型的格式化:format()方法

format()方法的基本使用

  字符串 format() 方法的基本使用格式如下:

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

  模板字符串由一系列槽组成,用来控制修改字符串中嵌入值出现的位置;槽用大括号({})表示,大括号中指定使用参数的序号,按照序号对应参数替换,参数从 0 开始编号。

format()方法的格式控制

  format() 方法中的模板字符串的槽除了包括参数序号,还可以包括格式控制信息。槽内部的样式如下:

1
{<参数序号>:<格式控制标记>}

格式控制标记如下表:

标记 <填充> <对齐> <宽度> <,> <.精度> <类型>
描述 用于填充的单个字符 <左对齐
>右对齐
^居中对齐
槽的设定输出宽度 数字的千位分隔符号 浮点数小数部分的输出精度 整数类型b,c,d,o,x,X
浮点数类型
e,E,f,%

序列类型

  列表、元组、字典、集合是 Python 中常用的内置容器类对象。关于这一段内容的更多讨论见后面章节。

实例演示与分析

案例1:文本进度条

1-1:基本的进度条

  最简单地,利用 print() 函数实现简单的非刷新文本进度条。按照任务百分比划分成为 100 个单位,每执行 N% 输出一次进度条。每一行输出包含进度百分比,代表已经完成的部分(***)和没有完成的部分(…)。

1
2
3
4
5
6
7
8
9
10
11
import time
scale=10 #scale表示输出条的精度。
print("------执行开始------")
for i in range(scale+1): #i作为累乘符号。,由scale所控制。
a = '***'*i #a是字符串:制作已经完成的部分。
b = '...'*(scale-i) #b是字符串:制作没有完成的部分。
c=(i/scale)*100 #c是数字,代表进度条的精度。
print("%{0:^3.0f}[{1}->{2}]".format(c,a,b))
#打印:%--精度值--居中--百分显示部分宽度为3--浮点数--[--完成符--未完符--]
time.sleep(0.1)
print("------执行结束------")

案例1-1输出结果(scale=10)

案例1-1输出结果(scale=20)

1-2:单行动态刷新进度条

  与之前不同,将每一次进度输出都固定在同一行,并且不断地用新生成的字符串覆盖之前的输出,形成进度条不断刷新的动态效果。

1
2
3
4
import time
for i in range(101):
print("\r{0:3}%".format(i),end=" ") #'\r'为转义符:将输出指针移动到行首而不换行。
time.sleep(0.05)

案例1-2输出结果(有转义符)

案例1-2输出结果(无转义符)

1-3:带刷新的文本进度条

  在文本进度条中增加运行时间的监控,采用 time 库中的 time.clock() 函数。time.clock() 函数一般多次出现,第一次调用时计时开始,同一个程序中第二次以及后续调用时返回与第一次计时之间的时间差。

1
2
3
4
5
6
7
8
9
10
11
12
import time
scale=50
print("执行开始".center(scale//2,'-'))
t=time.perf_counter()
for i in range(scale+1):
a='*'*i
b='-'*(scale-i)
c=(i/scale)*100
t-=time.perf_counter()
print("\r{0:^3.0f}%[{1}->{2}]{3:.2f}s".format(c,a,b,-t),end=' ')
time.sleep(0.05)
print("\n"+"执行结束".center(scale//2,'-'))

案例1-3输出结果

案例2:字符串出现的次数

  编写程序,输入两个字符串,统计第一个字符串中所有的字符在第二个字符串中出现的总次数。

1
2
3
4
s1=input('请输入第一个字符串s1:')
s2=input('请输入第二个字符串s2:')
print('总次数为:',end=' ')
print(sum(map(lambda ch:s2.count(ch),s1)))

  1. 应当注意区分数字类型与字符串。1010表示一个整数,而"1010"表示一个字符串。 ↩︎

  2. 从前到后依次为:加、减、乘、除、整数商、模运算、幂。 ↩︎