一、整型和浮点型
1.整型作用:QQ号、手机号、不带字母的的身份证。。。
浮点型作用:薪资、身高、体重
2.整型定义方式:
age = 18 (age = int(18))
浮点型定义方式:
salary = 1.1 (float(1.1))
int只能转纯数字的字符串
进制转换:
其他进制转十进制:
二进制转十进制(0,1)
10 # 1*(2**1) + 0*(2**0) 2
八进制转十进制(0-7)
235 # 2*(8**2) + 3*(8**1) + 5*(8**0)
十六进制转十进制(0-9,A-F)
217 # 2*(16**2) + 1*(16**1) + 7*(16**0)
int可以传第一个参数,表示第一个参数是什么进制,然后转换成十进制
print(int('1100',2)) print(int('14',8)) print(int('c',16))
十进制转其他进制:
十进制转二进制:
print(bin(12)) # 0b1100 0b表示后面的数字是二进制数
十进制转八进制:
print(oct(12)) # 0o14 0o表示后面的数字是八进制数 14 >>> 1*(8**1) + 4*(8**0))
十进制转十六进制:
print(hex(12)) # 0xc 0x表示后面的数字是十六进制数
3.常用操作
存一个值、不可变类型
有序:有索引的数据都是有序的
ps:可变类型与不可变类型
可变类型:值改变的情况下,id不变,改的是原值
不可变类型:值改变的情况下,id一定变
x = 10 print(id(x)) # 1882746624 x = 11 print(id(x)) # 1882746656
二、字符串类型
1.作用:描述性
2.定义方式:' ','' '','''''' ''''''(单引号,双引号,多引号)
s = 'hello baby' # str('hello baby') s1 = str([1,2,3,4]) print(type(s1)) s2 = str({'name':'jason','password':123}) print(type(s2))
3.常用操作+内置的方法
优先掌握的操作:
(1)按索引取值(正向取+反向取):只能取
s = 'hello big baby~' print(s[0]) # h
(2)切片(顾头不顾尾,步长):从一个字符串中截取一个新的字符串;头-尾就是从左-右
s = 'hello big baby~' print(s[0:5]) # hello print(s[0:10:1]) # hello big 步长不写默认是1 print(s[0:10:2]) # hlobg 步长表示隔几个取一个
了解负值取值:
s = 'hello big baby~' print(s[-1]) # ~ print(s[0:5:-2]) # 切片取值默认是从左往右的 从0开始读起,所以是无 print(s[5:0:-1]) # 切片取值默认是从右往左的 从5开始读起,所以是 olle print(s[-1:-10:-1]) # ~ybab gib
(3)长度len():统计的是字符串中的字符的个数
s1 = ' ' print(len(s1)) # 1
(4)成员运算in和not in:判断一个子字符串是否存在于一个大的字符串中
print('egon' in 'egon is dsb and egon is sb') # True print('g' in 'egon is dsb and egon is sb') # True print('jason' not in 'egon is dsb and egon is sb') # True
(5)去掉字符串左右两边的字符strip,不管中间的
strip()默认取出字符串首尾的空格
使用内置的方法统一采用 句点符(.)
username = input('>>>:').strip() if username == 'jason': print('good job')
name1 = 'jason' name2 = ' jason '.strip() print(name1 == name2) # True name3 = '$$$$$eg$on$$$$' print(name3.strip('$')) # eg$on
了解即可
name4 = '% ¥#jason&*)' print(name4.strip('% ¥#)')) # jason&* # rstrip() lstrip() name5 = '$$$$jason$$$$' print(name5.lstrip('$')) # left左边 jason$$$$ print(name5.rstrip('$')) # right右边 $$$$jason
(6)切分split:针对按照某种分隔符组织的字符串,可以用split将其切分成列表,进而进行取值
data = 'jaso n|123| handsome' print(data.split('|')) # ['jaso n', '123', ' handsome'] username,password,info = data.split('|') print(username,password,info) # jaso n 123 handsome
强调:split切分出来的数据类型是一个列表
data = 'jaso n|123| handsome' print(data.split('o')) # 切割的顺序其实从左往右的 ['jas', ' n|123| hands', 'me'] print(data.split('o',1)) # 切割的顺序其实从左往右的 ['jas', ' n|123| handsome'] print(data.rsplit('o',1)) # 切割的顺序其实从左往右的 ['jaso n|123| hands', 'me']
如果不指定那么split和rsplit效果都是一样
(7)循环
data = 'jason' for i in data: print(i) # j a s o n
需要掌握的:
(1)strip:去掉字符串左右两边的字符
lstrip:去掉字符串左边的字符
rstrip:去掉字符串右边的字符
(2)lower:使字符串全部小写
upper:使字符串全部大写
s = 'JaS1oN' res = s.lower() print(res) # jas1on print(s) # JaS1oN print(s.upper()) # JAS1ON print(s) # JaS1oN
调用字符串的方法并没有改变字符串本身
(3)startswith:判断字符串是否以什么开头
endswith:判断字符串是否以什么结尾
s1 = 'egon is dsb' print(s1.startswith('e')) # 判断字符串是否以什么什么开头 True print(s1.endswith('n')) # 判断字符串是否以什么什么结尾 False
(4)format的三种方法(python推荐使用format做格式化输出)
第一种:按位置占位(跟%s原理一致)
str = 'my name is {} my age is {}'.format('jason',18) str1 = 'my name is {} my age is {}'.format(18,'jason',) print(str) # my name is jason my age is 18 print(str1) # my name is 18 my age is jason
第二种:按索引占位
str1 = 'my {1} name is {0} my {0} age is {0}'.format('egon',18) print(str1) # my 18 name is egon my egon age is egon
第三种:指名道姓占位(关键字传参)
str1 = 'my {name} name is {age} my {name} age is {name}'.format(name='jason',age=18) print(str1) # my jason name is 18 my jason age is jason
(5)split:按照某种分隔符组织的字符串切分成列表,从而取值
rsplit:从右边切分
(6)join:将容器内的多个元素通过指定的字符拼接成一个字符串
data = 'jason|123|handsome' res_list = data.split('|') print(res_list) # ['jason', '123', 'handsome'] res_str = '$'.join(res_list) # 将容器类型中的多个元素通过指定字符拼接成一个字符串 print(res_str) # jason$123$handsome l = ['1','a','b'] res = '|'.join(l) print(res) # 1|a|b
(7)replace:修改字符串中的某个字符
str = 'egon is dsb and egon is sb he has a BENZ' res = str.replace('egon','kevin',1) print(res) # kevin is dsb and egon is sb he has a BENZ print(str) # egon is dsb and egon is sb he has a BENZ
(8)isdight:判断字符串中包含的是否为纯数字
while True: age = input('>>>:') if age.isdigit(): age = int(age) if age > 28: print('阿姨好') else: print('请输入数字')
需要了解的内置方法:
(1)find,rfind,index,rindex,count
s = 'kevin is dsb o and kevin is sb' print(s.find('dsb')) # 返回的是d字符所在的索引值 print(s.find('xxx')) # 找不到的时候不报错返回的是-1 print(s.find('i',0,3)) # 还可以通过索引来限制查找范围 print(s.index('o')) # 返回所传字符所在的索引值 print(s.index('i',0,3)) # 返回所传字符所在的索引值 print(s.count('n')) # 统计字符出现的次数
(2)center,ljust,rjust,zfill
s9 = 'jason' print(s9.center(12,'*')) # 居中 print(s9.ljust(40,'$')) # 左对齐 print(s9.rjust(40,'$')) # 右对齐 print(s9.rjust(40,' ')) print(s9.zfill(40)) # 中部填充
(3)expandtabs
s10 = 'a\tbc' print(s10.expandtabs(100))
(4)captalize,swapcase,title
s12 = 'hElLo WoRLD sH10' print(s12.capitalize()) # Hello world 首字母大写 print(s12.swapcase()) # 大小写互换 print(s12.title()) # 每个单词的首字母大小
(5)is数字系列(通常情况下使用isdigit)
num1=b'4' #bytes num2=u'4' #unicode,python3中无需加u就是unicode num3='壹' #中文数字 num4='Ⅳ' #罗马数字 # ''.isnumeric(): unicode,中文数字,罗马数字 只要是表示数字都识别 print(num2.isnumeric()) print(num3.isnumeric()) print(num4.isnumeric()) # ''.isdecimal(): unicode 只识别普通的阿拉伯数字 print(num2.isdecimal()) print(num3.isdecimal()) print(num4.isdecimal()) # ''.isdigit() :bytes,unicode 通常情况下使用isdigit就已经满足需求了 print(num1.isdigit()) print(num2.isdigit()) print(num3.isdigit()) print(num4.isdigit())
存一个值,不可变类型
有序
三、列表类型
1.作用:多个装备,多个爱好,多门课程,多个女朋友等
2.定义:[ ]内可以有多个任意类型的值,逗号分隔
list内部原理就是for循环取值 然后一个个塞到列表中去
优先掌握的操作:
(1)按索引存取值(正向存取+反向存取):即可存也可取
l = [1,2,3,4] print(l[0:4:1]) # [1, 2, 3, 4] print(l[0::]) # [1, 2, 3, 4] print(l[5::-1]) # [4, 3, 2, 1] print(id(l)) # 1584786580552 l[0] = 69 print(id(l)) # 1584786580552 print(l) # [69, 2, 3, 4]
(2)切片(顾头不顾尾,步长)
(3)长度
l = [11,22,33,44,55] print(len(l)) # 14
(4)成员运算in和not in
l = [11,22,33,44,55] print( 444 in l) # False
(5)往列表中添加元素
l = [11,22,33,44,55] l1 = [99,88,77,66] # [11,22,33,44,55,99,88,77,66] # 1.尾部添加一个66 l.append(66) # 注意append值能将被添加的数据当作列表的一个元素 print(l) # 2.任意位置添加元素 l.insert(2,96) # 通过索引在任意位置添加元素 print(l) # 注意insert值能将被添加的数据当作列表的一个元素 # 3.添加容器类型数据 l.append(l1) l.insert(-1,l1) l.extend(l1) # 内部原理for循环l1一个个追加到列表的尾部 l.extend([1,]) print(l)
(6)删除
l = [11,22,33,44,55] print(l) del l[2] # del适用于所有的删除操作 print(l)
res1 = l.pop() # 尾部弹出 res2 = l.pop() res3 = l.pop() print(res1,res2,res3) res1 = l.pop(0) # 可以指定索引 按照索引弹出元素 print(res1) res = l.remove(33) # 指定要删除的元素的值 print(l) print(res) s = 'haha' print(s) del s print(s)
(7)循环
l = [11,22,33,44,55] for i in l: print(i)