2021-04-27

python要素一:基本数据类型

一、标识符

标识符:我们自己在写代码的时候,取的名字。命名的符号。
项目名:project name、包名:package name、模块名:.py python文件名

标识符规范:

1:由字母数字下划线组成 但是不能以数字开头
2:见名知意
3:不同的字母 数字之间 用下划线隔开 提升你的可读性
4:不能用关键字 例如:int if while

注释:
注释:# 单行注释 ctrl+/
多行注释:成对的三个单/双引号 ''' '''

基本数据类型 :Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)

二、Integral类型

包括int和bool两种类型。

(一)整数

整数的大小只受限于机器内存的大小。默认采取的十进制,也可以使用其他进制,如0b01(二进制)、0o67(八进制)、0xab(十六进制)。

常见的数学函数和操作符都能作用于整数,如+、-、*、/、//(整除,保留商的整数部分)、%(取模)、(幂),函数abs(x)返回x的绝对值,divmod(x,y)以二元组的形式返回x除以y所得的商和余数,pow(x,y)返回x的y次幂,pow(x,y,z)返回xy%z的值,round(x,n)返回浮点数x保留n位小数后四舍五入的值。

整数转换函数:

  • bin(i)返回二进制表示的字符串
  • hex(i)返回十六进制表示的字符串
  • int(x)数据类型转换,返回整数
  • int(s,base)将字符串s转换为整数,如果给定了可选的基参数,那么应该为2到36之间的整数。如int(‘a4’,16)表示值为164的整数。
  • oct(i)返回八进制表示的字符串

(二)布尔型

有两个内置的布尔型对象,True与False。

三、浮点类型

Python提供了3种浮点值:内置的float与complex类型,以及来自标准库的decimal.Decimal类型。计算机总是有效地将浮点数以近似值的方式存储。

(一)浮点数

float存放双精度浮点数,具体取值范围依赖构建Python的C(C#、Java等)编译器,由于精度受限,对其进行相等性比较并不可靠。sys.float_info.epsilon是可以区分出两个浮点数的最小区别。Python的float类型通常会至多提供17个数字的精度。

(二)复数

复数存放的是一对数,一个表示实数部分,一个表示虚数部分,如z=-89.5+2.125j,z.real和z.imag分别为-89.5和2.125。复数类型有一个方法conjugate(),用于改变虚数部分的符号。

math模块中的函数不能处理复数,要使用复数,可以先导入cmath模块。

(三)十进制数字

decimal模块提供的十进制数,精度可以自行指定,准确性比float类型高,但计算速度比float慢。

十进制数由decimal.Decimal()创建

四、字符串

字符串是由单引号、双引号或三个单(双)引号创建的。

Python字符串转义如下所示,由r引导的字符串其内部所有字符均按照字面意义理解,不需要进行转义。

转义字符描述
(在行尾时)续行符,忽略换行
\反斜杠符号
'单引号
"双引号
\a响铃(BEL)
\b退格(BS)
\N{name}给定名称的Unicode字符
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\000三位八进制数代表的字符,例如:\012代表换行
\xyy十六进制数yy代表的8位Unicode字符,例如:\x0a代表换行
\uyyyy十六进制数yyyy代表的16位Unicode字符
\Uyyyyyyyy十六进制数yyyyyyyy代表的32位Unicode字符

长字符串跨行时,可以用三个引号封装,也可以用转义符"(在行尾)",或者用“()”将各行字符串封装起来。

(一)比较字符串

字符串比较运算符与数字比较运算符相同。

字符串比较时,通常遇到两个问题:①有些Unicode字符可以使用多种字节序列表示,如Å(Unicode字元0x00c5)可以3种不同方式使用utf-8编码的字节表示(16进制数表示):[E2,84,AB]、[C3,85]、[41,CC,8A],调用函数unicodedata.normalize('NFKD','Å')进行标准化,返回的字符串中Å的字节序列总是[41,CC,8A];②有些字符的排序是特定于某种语言的。Python在字符串比较时,采取的是字符串的内存字节表示,此时排序是基于Unicode字元的。

(二)字符串分片与步距

seq[start](取单个元素)

seq[start:end](能取到start至end-1的元素,即顾头不顾尾。start、end可正可负,可以将负数下标+lenth变为正数下标)

seq[start🔚step](当step为正数时,start从0开始算起,应满足start<=end;当step为负数时,start从-1开始算起,应满足start>=end)

其中,seq可以是任意序列,比如列表、字符串或元组。seq的每个元素可以用正反向两个下标表示,即seq[i]与seq[i-lenth(0<=i<lenth),start、end、step必须是整数。

(三)字符串操作符与方法

参考资料1

 #strip
a = "allexexeexx"print(a.lstrip("ex"))#allexexeex
print(a.rstrip("ex"))#all
print(a.strip("ex"))#all
print(a.lstrip("lex"))#allexexeex
print(a.rstrip("lex"))#a
print(a.strip("lex"))#a
print(a.lstrip("alex"))#空
print(a.rstrip("alex"))#空
print(a.strip("alex"))#空
#结论:strip() 处理的时候,如果不带参数,默认是清除两边的空白符,例如:/n, /r, /t, ' ')。 带有参数的时候,分别从两边删除参数中包含的字符,直到遇到不在参数中的字符为止。

#lower,upper
name='egon'
print(name.lower())
print(name.upper())

#startswith,endswith
name='alex_SB'
print(name.endswith('SB'))
print(name.startswith('alex'))

#format的三种玩法
res='{} {} {}'.format('egon',18,'male')
res='{1} {0} {1}'.format('egon',18,'male')
res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)

#split
name='root:x:0:0::/root:/bin/bash'
print(name.split(':')) #默认分隔符为空格
name='C:/a/b/c/d.txt' #只想拿到顶级目录,切分1次
print(name.split('/',1))

name='a|b|c'
print(name.rsplit('|',1)) #从右开始切分

#join
tag=' '
print(tag.join(['egon','say','hello','world'])) #可迭代对象必须都是字符串

#replace
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',1))

#isdigit:可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法
age=input('>>: ')
print(age.isdigit())

#find,rfind,index,rindex,count
name='egon say hello'
print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
# print(name.index('e',2,4)) #同上,但是找不到会报错
print(name.count('e',1,3)) #顾头不顾尾,如果不指定范围则查找所有

#center,ljust,rjust,zfill
name='egon'
print(name.center(30,'-'))
print(name.ljust(30,'*'))
print(name.rjust(30,'*'))
print(name.zfill(50)) #用0填充

#expandtabs
name='egon\thello'
print(name)
print(name.expandtabs(1))

#captalize,swapcase,title
print(name.capitalize()) #首字母大写
print(name.swapcase()) #大小写翻转
msg='egon say hi'
print(msg.title()) #每个单词的首字母大写

#is数字系列
#在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字

#isdigt:bytes,unicode
print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False

#isdecimal:uncicode
#bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False

#isnumberic:unicode,中文数字,罗马数字
#bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True

#三者不能判断浮点数
num5='4.3'
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())

#总结:
#最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
#如果要判断中文数字或罗马数字,则需要用到isnumeric


#is其他
print('===>')
name='egon123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成

print(name.isidentifier())
print(name.islower())
print(name.isupper())
print(name.isspace())
print(name.istitle())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值