Fork me on GitHub

python数字类型

整数类型

eg:1010,99,-217,0x9a,-0x89

整数类型共有四大类:十进制,八进制,二进制,十六进制

二进制是以0b为索引,八进制是以0o为索引,十六进制是以0x为索引,大小写均可使用

进制种类 索引符号 描述
十进制 默认情况,例如,1010,-425
二进制 0b 由字符0和1组成,例如,0b101
八进制 0o 由字符0到7组成,例如,0o711
十六进制 0x 由字符0到9,a到f,A到F组成,例如0xABC

整数理论上是没有限制的,实际情况受限于运行python程序的计算机内存的大小

浮点数类型

eg:0.0,-77.0,-2.17,3.1415926,96e4

科学计数法使用字母e或E作为幂的符号,以10为基数,含义为:< a >e< b > = a * 10^b

浮点数类型的取值范围在[2^-1023,2^1023]之间,运算精确度极高

复数类型

Python语言中,复数的虚数部分用后缀“J”或”j“来表示

eg:12.3+4j -5.6+7j 12.3e-4+5.67e+89j

复数类型中实数部分和虚数部分的数值都是浮点数类型,对于复数Z,可以用z.real和z.imag分别获取它的实部和虚部

1
2
>>>(1.23e-4+5.67e+89j).real
>>>(1.23e-4+5.67e+89j).imagr

python数字类型的操作

内置的数值运算操作符

操作符 描述
x+y x与y之和
x-y x与y之差
x*y x与y之积
x/y x与y之商
x//y x与y的整数商,即不大于x与y商的最大整数
x%y x与y之商的余数,也称为模运算
-x x的负值,即x*(-1)
+x x本身
x**y x的y次幂,即x^y

三种数字类型之间的逐渐拓展关系

整数——>浮点数——>复数

python数字类型转换的基本规则:

  • 整数之间运算,如果数学意义上的结果是小数,结果为浮点数
  • 整数之间运算,如果数学意义上的结果是整数,结果是整数
  • 整数与浮点数混合运算,输出的结果是浮点数
  • 整数或浮点数与复数运算,输出的结果是复数

增强赋值操作符

所有的二元数学操作符(+,-,*,/,//,%,**)都有与之对应的增强赋值运算符(+=,-=,=,/=,//=,%=,=)

设操作符为op

x op= y<=>x = x op y

内置的数值运算函数

内置的数值运算函数

函数 描述
abs(x) x的绝对值
divmod(x,y) (x//y,x%y),输出为二元组形式(也称为元组类型)
pow(x,y[,z]) (x**y)%z,[…]表示该参数可以忽略,即pow(x,y)
round(x[,ndigits]) 对x进行四舍五入,保留ndigits位小数。round(x)返回四舍五入后的整数的值
max(x1,x2,x3,…,xn) x1,x2,x3,…,xn的最大值
min(x1,x2,x3,…,xn) x1,x2,x3,…,xn的最小值

内置的数字类型转换函数

函数 描述
int(x) 将x转换为整数,x可以是浮点数或字符串
float(x) 返回浮点数x或者字符串x所对应的整数类型
complex(re[,im]) 生成一个复数,实部为re,虚部为im,re可以是整数、浮点数或字符串,im可以是整数或浮点数但不能为字符串

python字符串类型及其操作

python字符串类型及其操作

字符串类型的表示

python语言中字符串是字符的序列表示,可以由一对单引号(‘),双引号(“),或三引号(”‘)构成

  • 单引号字符串:’单引号表示,可以使用“双引号”作为字符串的一部分‘
  • 双引号字符串:“双引号表示,可以使用’单引号‘作为字符串的一部分”
  • 三引号字符串:“’三引号表示可以使用”双引号“‘单引号’亦可以换行”‘

字符串中引号的使用

字符串中input和print函数的使用

  • input()函数将用户输入的内容当作一个字符串类型,是获得用户输入的常用方式
  • print()函数可以直接打印字符串,这是输出字符串的常用方式

字符串的两种序号体系

python语言的字符串有两种序号体系:

正向递增序号:以最左侧字符序号为0,向右依次递增,最右侧的字符序号为L-1
反向递减序号:以最右侧字符序号为-1,向左依次递减最左侧的字符序号为-L
反向递减序号

<——————————————————

-11-10 -9 -8 -7 -6 -5 -4 -3 -2 -1

[H] [e] [l] [l] [o] [ ] [W] [o] [r] [l] [d]

0 1 2 3 4 5 6 7 8 9 10

——————————————————>

正向递增序号
————————————————
版权声明:本文为CSDN博主「省级干饭王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_55016379/article/details/114675213

(省级干饭王就是我自己)

python访问字符串的方法

python字符串也提供区间访问方式,采用**[N:M]**格式,表示字符串中从N到M(不包含M)的子字符串

N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号

如果表示中的M或者N索引缺失,则表示字符串把开始或结束索引值设为默认值。

格式化控制符

控制符 作用
\a 蜂鸣,响铃
\b 回退,向后退一格
\f 换页
\n 换行,光标移动到下一行首行
\r 回车,光标移动到本行首行
\t 水平制表
\v 垂直制表
\0 NULL,什么都不做

基本的字符串操作符

五个基本的字符串操作符

操作符 描述
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

字符串操作

使用字符串作为查找表的缺点是,所剪切的子字符串长度必须相同

内置的字符串处理函数

python解释器中提供以一些内置函数,其中6个函数和字符串有关

函数 描述
len(x) 返回字符串x的长度,也可返回其他组合数据类型元素个数
str(x) 返回任意类型x所对应的字符串形式
chr(x) 返回Unicode编码x对应的单字符
ord(x) 返回单字符表示的Unicode编码
hex(x) 返回整数x对应十六进制的小写形式的字符串
oct(x) 返回整数x对应的八进制小写形式字符串

ASCLL和Unicode区别

目前计算机系统使用的编码是ASCLL,在C语言和JAVA语言中使用的都是ASCLL,ASCLL局限性在于,它只能表示英语字符,是为英语字符设计的,并没有包含其他的语言。所以它的覆盖面比较小

而Unicode几乎支持所有书写语言的字符。

内置的字符串处理方法

字符串类型共包含43个内置方法。但这里只介绍常用的16种方法

方法 描述
str.lower() 返回字符串str的副本,全部小写
str.upper() 返回字符串str的副本,全部大写
str.islower() 当str的所有字符都是小写时,返回True,否则返回False
str.isprintable() 当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.starwith(prefix[,start,[,end]]) str[start:end]以prefix开始返回True,否则返回False
str.split(sep=None,maxsplit=-1) 返回一个列表,由str根据sep被分割的部分构成
方法 描述
str.count(sub[,strat[,end]]) 返回str[start:end]中sub子串出现的次数
str.replace(old,new[,count]) 返回字符串str的副本,所有old子串全被new替换,如count给出,只替换前count相
str.center(width[,fillchar]) 字符串居中函数
str.strip([chars]) 返回字符串str的副本在其左侧和右侧去除chars给出的字符
str.zfill(width) 返回str的副本,长度为width不够在左侧填0
str.format() 返回字符串的一种排版格式
str.join(iterable) 返回一个新的字符串,由字符串iterable变量的每个元素组成,元素间隔用str隔开
  • str.split(sep=None,maxsplit=-1)返回一个列表,可以储存多个数据类型
  • str.center(width[,fillchar]):返回长度为width的字符串,不够用fillchar补充,超了返回str
  • str.zfill(width) :返回str的副本,长度为width不够在左侧填0,超了返回str

字符串类型的格式化

字符串类型的格式化

python语言提供两种字符串格式化方法,一种类似C语言中printf()函数的格式化方法;另一种是采用专门的str.format()格式化方法

format()方法的基本使用

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

模板字符串由一系列槽组成,用来控制修改字符串中嵌入值出现的位置,其基本思想是将format()方法中逗号分隔的参数按照序号关系替换到模板字符串的槽中。

槽用大括号({})表示,如果大括号中没有序号,则按照出现顺序替换

format()方法的格式控制

format()方法格式为:{<参数序号>:<格式控制标记>}

格式控制符

形式 效果
: 引号符号
<填充> 用于填充的单个字符
<对齐> <左对齐;>右对齐;^居中对齐
<宽度> 槽的输出格式设定输出宽度
<,> 数字的千位分隔符适用于整数和浮点数
<.精度> 浮点数小数的部分的精度或是字符串的最大输出长度
<类型> 整数类型(b,c,o,x,X)浮点数类型(e,E,%,f)

**<对齐>**指的是分别使用<,>,^三种对齐方式,<填充>指的是除参数外,通过其他方式进行填充

<类型>的几种形式

形式 用途
b 输出整数的二进制方式
c 输出整数对应的Unicode
d 输出整数的十进制方式
o 输出整数的八进制方式
x 输出整数的小写十六进制方式
X 输出整数的大写十六进制方式

文本进度条

这是一个利用格式化输出和时间延迟实现控制台风格式文本进度条

简单的开始

print()函数在输出结尾处会自动生成一个‘\n’,即换行符,从而让光标移动到下一行行首

1
2
3
4
5
6
7
8
9
import time                    #引入time函数库
scale = 10
print("------执行开始------")
for i in range(scale+1):
a, b = '**' * i,'..' * (scale - i)
c = (i/scale)*100
print("%{:^3.0f}[{}->{}]".format(c, a, b))
time.sleep(0.1)
print("------执行结束------")

单行动态刷新

单行动态刷新:每一次进度条的输出都固定在同一行,并不断地用新生成的字符串覆盖之前的输出

1
2
3
4
import time
for i in range(101):
print("\r{:3}%".format(i), end = ' ')
time.sleep(0.05)

带刷新的文本进度条

这种方式是采用time库中的time.clock()函数。

第一次调用时计时开始,同一程序中第二次及后续调用时返回与第一次计时之间的时间差,单位为秒

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

思考

  • 用户可以容忍最初的慢速增长
  • 用户难以忍受在在进程快要结束时进度条突然停滞不前

上述研究实际上建议在设计进度条时,可以适当降低开始阶段的进展速度,然后适当加快末尾阶段的发展速度,这样的调整可以使用户感到更加舒适

python——>random库

random库的概述

使用random库的主要目的是生成随机数

函数库提供了很多函数,不过都是基于最基本random.random()函数扩展得到的

random库解析

random常用的9个函数

函数 描述
seed(a=None) 初始化随机数种子,默认值为当前系统时间
random() 生成一个[0.0,1.0]之间的小数
randint(a,b) 生成一个[a,b]之间的整数
getrandbits(k) 生成一个k比特长度的随机整数
randrange(start,stop[,step]) 生成一个[strat,stop)之间以step为步数的随机整数
uniform(a,b) 生成一个[a,b]之间的随机小数
choice(seq) 从序列类型,例如列表中随机返回一个元素
shuffle(seq) 将序列类型中的元素随机排序,返回打乱后的序列
sample(pop,k) 从pop类型中随机选取k个元素,以列表类型返回

python程序的异常处理

异常处理:try—except语句

当用户输入的数据类型了python要求执行的类型不同时,python解释器会报错

NameError就是此时的异常类型,数据类型出错

Python使用try-except语句格式为:

1
2
3
4
try:
<语句块1>
except<异常类型>:
<语句块2>

异常的高级用法

try和except还可以与else和finally保留字配合使用

格式如下:

1
2
3
4
5
6
7
8
try:
<语句块1>
except <异常类型1>:
<语句块2>
else:
<语句块3>
finally:
<语句块4>

此处的else语句与for循环和while循环中的else一样,当try中的语句块1正常执行结束且没有发生异常时,else中的语句块3执行,看作是对try语句块正常执行后的一种追加处理。finally语句块则不同,无论try中的语句块1是否发生异常,finally下的语句块4都会执行。

python第三方库的安装

python语言提供了三种安装第三方库的方法,希望观者能全部掌握

pip工具安装

pip是python内置命令,需要通过输入指令来执行命令

需要保持电脑处于通网状态

对于python3的用户,在安装python3时已经自动安装了pip,但对于python2的用户还需要在python官网下载pip

在此处我使用安装第三方库是在Windows的cmd上操作的

请勿在IDLE环境下运行pip

第一步 打开cmd 输入命令D:使其进入D盘中(因为我的pip是在D盘中下载的)

第二步 输入指令 pip -h 可以检测说明pip可执行的命令

如图中所示,Commands就是pip可执行的命令

命令 作用
install 安装
download 下载
uninstall 卸载
list 列表
show 查看
search 查找

pip使用方法

格式

pip <命令> <虚拟库名>

这里我只演示了install和uninstall操作以tqdm为例

install

第一步:在命令行输入pip install tqdm

第二步:等待,不要做任何操作,在进度条读取完后就代表库安装完成

uninstall

第一步:在命令行输入pip uninstall tqdm

第二步:计算机会先找到tqdm的位置,并询问是否继续 输入y

第三部:tqdm已经从电脑中被移除

pycharm第三方库安装

这里我使用的集成开发环境是pycharm,所以这里我介绍的是pycharm第三方库安装的方法

第一步:选择File——>setting

第二步:选择project——>python interpreter

在此处也可以看到我们已经下载安装过的函数

第三步: 点击下方的加号,在搜索列表中输入你要添加的函数库,等待函数库的安装

第四步:在安装完成后就可以正常使用了

自定义安装

这里是python安装第三方函数库的方法,可以在官方给与的维护库中自定义安装第三方函数

www.numpy.org

这是开发者维护的官网

www.scipy.org

这是浏览器下该网页的下载链接

第一步:打卡网站,点解install(下载)

第二步:点击pip,这里我还是选择pip下载

第三步:复制箭头指向的指令复制到cmd上,等待下载

第四步:在下载过程中保持网络开放状态

这次的下载会加载好多第三方函数库,几乎包括了全部常用的

第五步:检查

在cmd命令行输入pip list来查看所下载的函数库

注意这种方式要求网络状态良好,热点亲测不行,因为服务器在国外的原因,网络状态不佳往往会引起失败

python IDLE第三方函数库安装

第一步:进入python官网,选择pypi

www.python.org

第二步:搜索第三方函数库名

第三步:选择搜索到的第三方函数库(这里用tqdm做演示)

第四步:安装第三方函数库,并解压

第五步:解压结束后就安装成功了

函数的参数传递

要点:函数可以定义可选参数,使用参数的位置或名称传递参数的值,根据函数中变量的不同作用域有不同的函数返回值方式

可选参数和可变数量参数

部分参数不一定需要调用程序输入,可以在定义函数时直接为这些参数指定默认值。当函数被调用是,如果没有传入对应的参数值,则使用函数定义时的默认值代替

在函数定义时,也可以设计可变数量参数,通过在参数前增加星号(*)实现。带有星号的可变参数只能出现在参数列表的最后。

1
2
def vfunc(a,*b):

参数的位置和名称传递

函数调用时,实参默认采用按照位置顺序的方式传递给函数。

为了解决上述问题,python提供了按照参数名输入实参的方式,格式如下:

1
result = func(x2=4, y2=5, z2=6, x1=1, y1=2, z1=3)

函数返回值

return语句用来推出函数并将程序返回到含糊被调用的位置继续执行。return语句可以同时将0个、1个或多个函数运算后的结果返回给函数被调用处的变量

函数对变量的作用

一个程序中的变量包括两类:全局变量局部变量

  • 全局变量:指在函数之外定义的变量,一般没有缩进,在程序执行全过程有效
  • 局部变量:指在函数的内部使用的变量,仅在函数内部有效,当函数推出时变量将不存在

在想对函数的实参进行值得改变时,可以通过使用全局变量,用global作为数据类型,也可以通过列表来实现函数可以实现全局列表,而用采用global进行声明

python函数对变量的作用遵循如下原则:

  1. 简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名,其值不变
  2. 简单数据类型变量在用global保留字声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变
  3. 对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以直接使用并修改全局变量的值
  4. 如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变

拓展:指针和引用

  • 指针:是保存内存地址的变量,一般出现在比较底层的程序设计语言中,如C语言。
  • 引用:是某一变量的别名,用这个名字可以对变量进行操作,如Python列表类型的引用

两者的主要区别:指针直接指向内存,说明对象已经生成,而引用只是别名,需要真实创建对象才能操作对象。

函数的基本使用

函数的定义

函数是一段具有特点功能的,可重用的语句组,用函数名来表示并通过函数名进行函数调用。

函数可以分为大致两类:

第一类:用户自己写的函数,自定义函数

第二类:Python内置的函数,Python安装包自带一些函数和方法

使用函数主要有两种目的降低编译的难度代码重用

自定义函数

Python使用def保留字定义函数,语法格式:

1
2
3
4
def <函数名> (<参数列表>):
<函数体>
return <返回值列表>

函数名:函数名可以是任何有效的Python标识符;

参数列表:是调用该函数时,传递给它的值,可以有零个,一个或多个,当传递多个参数时,各参数由逗号隔开,当没有参数输入时,也要保留圆括号

返回值:当需要返回值时,使用保留字return和返回列表,否则函数可以没有return语句,在函数体结束位置将控制权返回调用者


函数调用

函数调用的一般形式如下:

1
<函数名>(<参数列表>)

程序调用一个函数需要执行一下四步:

  • 调用程序在调用处暂停执行
  • 在调用时将实参复制给函数的形参
  • 执行函数体语句
  • 函数调用结束给出返回值,程序回到调用前的暂停处继续执行

所以,传递给函数的形参,只是实参的一个复印本,所以,形参的改变不会影响到实参的值

lambda函数

lambda是一个保留字,用lambda保留字定义一种特殊的函数——匿名函数,又称lambda函数

基本语法格式如下:

1
<函数名> = lambda <参数列表> : <表达式>

这种书写形式等价于

1
2
def <函数名>(<参数列表>):
return <表达式>

综上:lambda函数用于定义简单的、能够在一行内表示的函数,返回一个函数类型

  • Copyrights © 2015-2023 dwx
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信