Python第四课(数据类型)
Python第四课(数据类型) >>>转到思维导图>>>转到我的博客
整型(int)
用途:记录QQ号、手机号、身份证号等
定义:age = 18
常用操作+内置的方法
int只能转存数字的字符串,小数点都不行
进制转换
>>> print(int('1100',2)) # 二进制转十进制 0,1 12 >>> print(int('14',8)) # 八进制转十进制 0-7 12 >>> print(int('c',16)) # 十六进制转十进制 0-9 A-F 12 # int可以传第一个参数,表示的是第一个参数到底是什么进制 然后转成十进制 >>> print(bin(12)) # 10进制转二进制 0b1100 # 0b1100 0b表示后面的数字是二进制数 >>> print(oct(12)) # 10进制转八进制 0o14 # 0o14 0o表示后面的数字是八进制数 >>> print(hex(12)) # 10进制转16进制 0xc # 0xc 0x表示后面的数字是十六进制数
有序:但凡有索引的数据都是有序的
不可变:值改变的情况下,id一定变
浮点型(float)
用途:记录薪资、身高、体重等
定义:salary = 1.1 # salary = float(1.1)
salary = 1.1 # salary = float(1.1) >>> res = float('1.11') >>> print(type(res)) <class 'float'>
有序:但凡有索引的数据都是有序的
不可变:值改变的情况下,id一定变
字符串(str)
用途:描述性
定义:' '," ",""" """
常用操作+内置的方法
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 # 步长表示隔几个取一个 了解负数取值 >>> print(s[-1]) ~ >>> print(s[0:5:-2]) # 切片取值默认是从左往右的 >>> print(s[5:0:-1]) # 切片取值默认是从左往右的 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,不管中间的
>>> username = input('>>>:').strip() >>>: jason >>> if username == 'jason': ... print('good job') ... good job # strip()默认去除字符串首尾的空格 # 使用内置的方法统一采用 句点符(.) >>> 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() File "<stdin>", line 1 rstrip() lstrip() ^ SyntaxError: invalid syntax >>> name1 = 'jason' >>> name2 = ' jason '.strip() >>> print(name1 == name2) True >>> name3 = '$$$$$eg$on$$$$' >>> print(name3.strip('$')) eg$on >>> name4 = '% ¥#jason&*)' >>> print(name4.strip('% ¥#)')) jason&* >>> 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切分出来的数据类型是一个列表 >>> 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.循环
>>> for i in data: ... print(i) ...
重点掌握的内置方法
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原理一致
>>> str1 = 'my name is {} my age is {}'.format(18,'jason',) >>> print(str1) my name is 18 my age is jason >>> str2 = 'my name is {} my age is {}'.format('jason',18) >>> print(str2) my name is jason my age is 18
第二种 按索引占位
>>> 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.isdigit # 判断字符串中包含的是否是纯数字
>>> while True: ... age = input('>>>:') ... if age.isdigit(): ... age = int(age) ... if age > 28: ... print('阿姨好') ... else: ... print('加个微信') ... else: ... print('你TM能不能好好输') ... >>>:30 阿姨好 >>>:14 加个微信 >>>:aaa 你TM能不能好好输
需要了解的内置方法
1.find,rfind,index,rindex,count
>>> s = 'kevin is dsb o and kevin is sb' >>> print(s.find('dsb')) # 返回的是d字符所在的索引值 9 >>> print(s.find('xxx')) # 找不到的时候不报错返回的是-1 -1 >>> print(s.find('i',0,3)) # 还可以通过索引来限制查找范围 -1 >>> print(s.index('o')) # 返回所传字符所在的索引值 13 >>> print(s.index('i',0,3)) # 返回所传字符所在的索引值 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found >>> print(s.count('n')) # 统计字符出现的次数 3
2.center,ljust,rjust,zfill
>>> s9 = 'jason' >>> print(s9.center(12,'*')) ***jason**** >>> print(s9.ljust(40,'$')) jason$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>> print(s9.rjust(40,'$')) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$jason >>> print(s9.rjust(40,' ')) jason >>> print(s9.zfill(40)) 00000000000000000000000000000000000jason
3.expandtabs
>>> s10 = 'a\tbc' >>> print(s10.expandtabs(100)) a bc
4.captalize,swapcase,title
>>> s12 = 'hElLo WoRLD sH10' >>> print(s12.capitalize()) # Hello world 首字母大写 Hello world sh10 >>> print(s12.swapcase()) # 大小写互换 HeLlO wOrld Sh10 >>> print(s12.title()) # 每个单词的首字母大小 Hello World Sh10
5.is数字系列
>>> num1=b'4' #bytes >>> num2=u'4' #unicode,python3中无需加u就是unicode >>> num3='壹' #中文数字 >>> num4='Ⅳ' #罗马数字 # ''.isnumeric(): unicode,中文数字,罗马数字 只要是表示数字都识别 >>> print(num2.isnumeric()) True >>> print(num3.isnumeric()) True >>> print(num4.isnumeric()) True # ''.isdecimal(): unicode 只识别普通的阿拉伯数字 >>> print(num2.isdecimal()) True >>> print(num3.isdecimal()) False >>> print(num4.isdecimal()) False # ''.isdigit() :bytes,unicode 通常情况下使用isdigit就已经满足需求了 >>> print(num1.isdigit()) True >>> print(num2.isdigit()) True >>> print(num3.isdigit()) False >>> print(num4.isdigit()) False
列表类型
用途:多个装备,多个爱好,多门课程等
定义:[ ]内可以有多个任意类型的值,逗号分隔
>>> l1=list({'name':'jason','password':'123'}) >>> print(l1) ['name', 'password'] # 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)) 1931767893768 >>> l[0] = 69 >>> print(id(l)) 1931767893768 >>> print(l) [69, 2, 3, 4] #2、切片(顾头不顾尾,步长) >>> l = [11,22,33,44,55] >>> l1 = [99,88,77,66] # 1.尾部添加一个66 >>> l.append(66) # 注意append值能将被添加的数据当作列表的一个元素 >>> print(l) [11, 22, 33, 44, 55, 66] # 2.任意位置添加元素 >>> l.insert(2,96) # 通过索引在任意位置添加元素 >>> print(l) # 注意insert值能将被添加的数据当作列表的一个元素 [11, 22, 96, 33, 44, 55, 66] # 3.添加容器类型数据 >>> l.append(l1) >>> l.insert(-1,l1) >>> l.extend(l1) # 内部原理for循环l1一个个追加到列表的尾部 >>> l.extend([1,]) >>> print(l) [11, 22, 96, 33, 44, 55, 66, [99, 88, 77, 66], [99, 88, 77, 66], 99, 88, 77, 66, 1] #3、长度 >>> print(len(l)) 14 #4、成员运算in和not in >>> print( 444 in l) False #5、往列表中添加元素(******) # append # insert # extend #6、删除 >>> print(l) [11, 22, 96, 33, 44, 55, 66, [99, 88, 77, 66], [99, 88, 77, 66], 99, 88, 77, 66, 1] >>> del l[2] # del适用于所有的删除操作 >>> print(l) [11, 22, 33, 44, 55, 66, [99, 88, 77, 66], [99, 88, 77, 66], 99, 88, 77, 66, 1] >>> res1 = l.pop() # 尾部弹出 >>> res2 = l.pop() >>> res3 = l.pop() >>> print(res1,res2,res3) 1 66 77 >>> res1 = l.pop(0) # 可以指定索引 按照索引弹出元素 >>> print(res1) 11 >>> res = l.remove(33) # 指定要删除的元素的值 >>> print(l) [22, 44, 55, 66, [99, 88, 77, 66], [99, 88, 77, 66], 99, 88] >>> print(res) None #7、循环 >>> for i in l: ... print(i) ... 22 44 55 66 [99, 88, 77, 66] [99, 88, 77, 66] 99 88
END