用来表示各式各样的数据,在代码程序中需要有不同的数据类型来表示不同的数据状态,例如,在生活中我们用数字表示年龄,用文字表示姓名
如何查看数据的数据类型,type()
(1)主要应用场景:年龄、学生、学生人数、年份等
(2)基本使用方法:变量名 赋值符号 整数
eg:age = 18,year = 2022
(3)内置方法:整型就是一个数字,它没有内置方法
(4)转换类型:
可以用来强制转换类型,但是需要注意的是必须都是纯数字,小数也不可以,因为小数点也属于字符
print(int('123456')) # 123456 print(int('123.34')) # ValueError: invalid literal for int() with base 10: '123.34' print(int('123dfwss')) # ValueError: invalid literal for int() with base 10: '123dfwss'
(5)进制的转换:
0b是二进制的标识,0o是八进制的标识,0x是十六进制的标识
十进制与其他进制的转换:bin()、oct()、hex()
'''二进制与十进制之间的转换,bin()''' print(bin(38)) # 0b100110 print(int(0b100110)) # 38 '''八进制与十进制之间的转换,oct()''' print(oct(38)) # 0o46 print(int(0o46)) # 38 '''十六进制与十进制之间的转换,hex()''' print(hex(38)) # 0x26 print(int(0x26)) # 38
(1)主要应用场景:体重、身高、薪资等
(2)基本使用方法:变量名 赋值符号 小数
eg:weight = 88.7,height = 187.2
(3)内置方法:整型就是一个数字,它没有内置方法
(4)转换类型:
print(float('123')) # 123.0 print(float('123.2.2')) # ValueError: could not convert string to float: '123.2.2' print(float('as122')) # ValueError: could not convert string to float: 'as122' print(float(True)) # 1.0 print(float(False)) # 0.0
强制转换为浮点型的时候,字符串里可以是纯整数,也可以是有识别一个小数点,但只能有一个小数点。对于布尔值的话,True在转化为浮点型的时候会转化为1.0,False在转化为浮点型的时候会转化为0.0
(1)主要应用场景:其实就是文本信息,用来描述性性质的信息,eg:家庭的详细信息
(2)基本使用方法:变量名 赋值符号 '描述的信息'
eg:address = '上海市浦东新区周浦镇XXX'
eg:address = "上海市浦东新区周浦镇XXX"
eg:address = '''上海市浦东新区周浦镇XXX'''
eg:address = """address = 上海市浦东新区周浦镇XXX"""
(3)疑问一:为什么定义字符串有许多方式?
在我们定义字符串内部的时候肯能文字内部也需要用到引号,出现这么多方式之后,可以避免定义字符串的符号与内部文本信息需要用到的引号发生冲突
(4)疑问二:它与注释语法的三引号怎么区分?
在我们定义字符串的时候不只是单单出现引号加内容的格式,我们定义字符串使用的方法格式是:变量名 赋值符号 '描述的信息',因此,区分他俩的的方法就是取看引号的左边是否有赋值符号和变量名。
(5)转化类型:任意数据类型都可以转化为字符串,我们在定义字符串的时候是(变量名 赋值符号 引号),所以在转化为字符串的时候,我们只需要在最外面加引号就可以了
print(str(123)) print(str(12.32)) print(str([1, 2, 3, 4, 5])) print(str({'name': 'zhang', 'age': 12})) print(str((1,2,3,4,5))) print(str({1,2,3,4,5})) ''' 123 12.32 [1, 2, 3, 4, 5] {'name': 'zhang', 'age': 12} (1, 2, 3, 4, 5) {1, 2, 3, 4, 5} '''
(6)内置方法
关于字符串取值之索引取值
通过数据值的索引取值,想取哪个就去哪个,支持的是单个字符得取值,可以反向取值
str = 'asdfhgjkeicna' '''正向取值是从0开始''' print(str[3]) '''反向取值是从-1开始''' print(str[-3])
关于字符串取值之切片取值
可以一次取多个字符,也可以反向取值,也是通过索引的方式来取值
str = 'asdfhgjkeicna' '''第一个数字表示的是起始的位置(索引),第二个数字表示的是终止的位置(索引('不顾尾,实际数目-1')),第三个数字代表的是反方向''' print(str[0:3]) # asd print(str[1:3]) # sd print(str[3:1:-1]) # fd '''切片取值默认方向是从左向右取值,反向取值的时候需要注意,反向取值的的需要从大值到小值''' print(str[-4:-1:-1]) # 取不到值 print(str[-1:-4:-1]) # anc
关于字符串取值之间隔/方向
间隔取值是指通过指定的间隔数依次取值,类似与数学中的等差数列,也可以控制方向
str = 'asdfhgjkeicna' '''只有:没有数字的时候表示取得是整个字符串内容''' print(str[:]) # asdfhgjkeicna '''第一个数字表示的是起始的位置,第二个数字表示的是终止的位置, 可以不写,不写默认从前到后依次取值,写了的话就是表示在这段范围内按间隔数取值, 第三个数字代表的是间隔(实际间隔数=间隔数-1)''' print(str[1:5:2]) # sf print(str[::3]) # afjia print(str[::2]) # adhjeca print(str[::-2]) # acejhda
统计字符串的个数
方法名:len()统计整个字符串单个字符的个数,需要注意的是空格也是字符也算其中
str = 'asdfh gjkei cna' print(len(str)) # 15
移除字符串字符
默认移除的是首尾的空格
''' 我们在登陆一些账号的时候首尾可能会多输入空格健,这个时候我们登录的时候会显示失败 看似我们输入的是'zhang',但实际上我们可能输入的是‘ zhang ’ 这个时候,我们就可以用到.strip()这个方法来移除首尾的空格 ''' username = input('请输入用户名:') if username == 'zhang': print('登录成功') else: print('你不是zhang!') name = ' zhang ' '''字符串的内置方法它不会修改原来的数据, 而是产生了新的数据,不会对原来的数据产生影响, 只是在原来的基础上产生了你需求的数据 可以给它绑定一个新的变量名,后续如果想用这个数据就可以直接使用变量名来使用''' print(len(name)) # 9 print(name.strip(), len(name.strip())) # jason 5 res = name.strip()
也可以用来移除指定的字符
'''.strip('$'))可以用来移除指定的值''' str = '$zhangzhangzhang$' print(str.strip('$')) # zhangzhangzhang '''.rstrip('$'))移除右边的指定的值''' print(str.rstrip('$')) # $zhangzhangzhang '''.lstrip('$')) 移除左边的指定的值''' print(str.lstrip('$')) # zhangzhangzhang$
按照指定的字符串切割字符串
切割后的字符串会形成一个列表
str = '$zha$ngzh$ang$zhang$' print(str.split('$')) # ['', 'zha', 'ngzh', 'ang', 'zhang', ''] '''.split('切割的符号', maxsplit=切割几次))''' print(str.split('$', maxsplit=2)) # ['', 'zha', 'ngzh$ang$zhang$'] '''也可以从右开始切割.rsplit('切割的符号', maxsplit=切割几次))---向右切割''' print(str.rsplit('$', maxsplit=2)) # ['$zha$ngzh$ang', 'zhang', '']
字符串的大小写
''' .upper()方法是表示将字符串中所有的小写转换为大写 .lower()方法是表示将字符串中所有的大写转换为小写 注意:转换只能是用于大小写,其他符号、数字不起作用 ''' str = 'ADljbdldNB' str2 = 'ajkjdLjlJKHJHKlk123' print(str.upper()) # ADLJBDLDNB print(str2.upper()) # AJKJDLJLJKHJHKLK123 print(str.lower()) # adljbdldnb print(str2.lower()) # ajkjdljljkhjhklk123 ''' .isupper()方法表示的是是否都为大写 .islower()方法表示的是是否都为小写 .isupper()与.islower()返回的结果过为布尔值 ''' str1 = 'ASD' str3 = 'aaa' str4 = 'aJsHX' print(str3.islower()) # True print(str1.islower()) # False print(str4.isupper()) # False print(str4.islower()) # False
字符串的格式输出
最开始我们接触的是设置好固定的文本信息,将不固定的地方用%占位后期进行输入数据值,但这种方法并不是那么的方便,我们需要按照顺次依次输入数据值,要是有数据值一样的地方,也是再次使用占位符来占位,再次输入数据值。
'''提前设置好文本信息,将需要更改的地方先用%进行占位,后面从前到后依次输入数据值''' str = '尊敬的动感地带用户,您好!截止%s,您的话费余额为%s元,为了保障您的通话畅通,请及时缴纳话费,谢谢' print(str % ('2010年11月12日18时15分', '19.58')) # 尊敬的动感地带用户,您好!截止2010年11月12日18时15分,您的话费余额为19.58元,为了保障您的通话畅通,请及时缴纳话费,谢谢
关键字 .format()
'''方法1:类似于刚开始我们接触的那种方法,只不过这里将%s换为了{}进行占位''' str = '尊敬的动感地带用户,您好!截止{},您的话费余额为{}元,为了保障您的通话畅通,请及时缴纳话费,谢谢' print(str.format('2010年11月12日18时15分', '19.58')) # 尊敬的动感地带用户,您好!截止2010年11月12日18时15分,您的话费余额为19.58元,为了保障您的通话畅通,请及时缴纳话费,谢谢 '''方法2:使用索引值,先在文本信息里输入索引值,然后再输入的地方按照索引值放入数据值''' str = '一天很短,{0}了就{1},不{0}就过一会儿再{1}' print(str.format('开心', '笑')) # 一天很短,开心了就笑,不开心就过一会儿再笑 '''方法3:使用K值进行占位,然后通过k值输入v值''' str = '我,{name},女,今年{age}岁,{collage},专业的应届毕业生' print(str.format(name='李哈哈', age=18, collage='系嘉应学院中文系汉语言文学(师范)')) '''最推荐使用的方法''' '''方法4:使用变量名,先将数据值绑定给变量,然后在使用的时候直接在{}里输入变量名就可是使用,同样也可以重复多次使用''' name = 'zr' age = 23 habby = '看悬疑剧,打游戏,听歌,看blackpink的视频,发呆,幻想,学习' feature = '脾气不好,喜欢骂人' print(f'我来自山西省,我叫{name},今年{age},我喜欢{habby},我{feature}') # 我来自山西省,我叫zr,今年23,我喜欢看悬疑剧,打游戏,听歌,看blackpink的视频,发呆,幻想,学习,我脾气不好,喜欢骂人
统计字符串中指定字符出现的次数
'''.count('需要统计的字符'),,底层实现的操作就是使用的是for循环,它内部自己用来比较是否与你输入的一致,然后自己再给累加,得出结果''' str = 'njhjakkdznkjhjsydhdghbad' print(str.count('j')) # 4
判断字符串的开头或者结尾
''' .startswith('需要判断的字符') .endswith('需要判断的字符') 可以判断单个字符,也可以判断多个字符,返回的结果是布尔值 ''' str = 'We are all gifted planners, but low-level executors, so that we often think too much and do too little.' print(str.startswith('We ')) # True print(str.startswith('W')) # True print(str.endswith('e')) # False print(str.endswith('tle.')) # True
字符串的替代
''' .replace('旧的值','新的值') ''' str = '我是猪