数据类型内置,顾名思义,就是指内部设置的数据类型,是Python语言内部自定义的一些数据类型,它包括了整型、浮点型、列表、字典、字符串、元组、集合的内置方法
整型的概念,在我们之前讲数据类型的时候已经说过了,其实就是整数,并且整型的关键字是int
而在python中整型int是没有内置方法的,它是用于数值计算的,它可以进行数据的类型转换和进制转换
数据类型转换 我们之前转换数据类型的方式是:将输入的数据类型通过变量名的方式进行赋值,然后通过int进行数据转换,如下: name = input() name =int(name) int可以将由纯数字组成的字符串直接转换成整型,若是包含其它非整数的符号,则会报错 # print(type(int('666'))) # <class 'int'> 字符串内部是纯数字可以进行数据类型转换 # print(type(int('666@1'))) # 存在特殊符号,无法进行数据类型转换,必须是纯数字 # print(type(int('66.66'))) # 存在小数点,无法进行数据类型转换 进制转换 """ 二进制、八进制、十进制、十六进制之间的转换 """ # print(bin(1000)) # bin() 将十进制转换为二进制 0b是二进制的标识 0b1111101000 # print(oct(1000)) # oct() 将十进制转换为八进制 0o是八进制的标识 0o1750 # print(hex(1000)) # hex() 将十进制转换为十六进制 0x是十六进制的标识 0x3e8 """ 其他进制转十进制 """ # print(int(0b1111101000)) # 1000 自动转换进制数 # print(int(0o1750)) # 1000 自动转换进制数 # print(int(0x3e8)) # 1000 自动转换进制数
浮点型关键字float 数据类型转换: # 数据类型转换之浮点型内置方法 # print(float(12138)) # 12138.0 # print(type(float('12138'))) # <class 'float'> # print(type(float('dy12138'))) # 无法进行数值转换,存在字母 # print(type(float(12138.66))) # <class 'float'> 浮点型在转换时只能识别一个小数点 # print(type(float('12138.66.77.88.99.1'))) # 无法转换,直接报错 # 针对布尔值的特殊情况,包含int与float的转换 print(float(True)) # 1.0 print(float(False)) # 0.0 print(int(True)) # 1 print(int(False)) # 0
字符串关键字str 数据类型转换:可以转换所有的数据值 print(str(777)) # 777 print(str(7.7)) # 7.7 print(str([9, 9, 9, ])) # [9, 9, 9] print(str({'username': '张三'})) # {'username': '张三'} print(str(True)) # True print(str((6, 6, 6))) # (6, 6, 6) print(str({8, 8, 8, 8})) # {8} print(type(str(777))) # <class 'str'> print(type(str(7.7))) # <class 'str'> print(type(str([9, 9, 9, ]))) # <class 'str'> print(type(str({'username': '张三'}))) # <class 'str'> print(type(str(True))) # <class 'str'> print(type(str((6, 6, 6)))) # <class 'str'> print(type(str({8, 8, 8, 8}))) # <class 'str'> 字符串的内置方法 # 数据类型之字符串内置方法 # # print(str(777)) # 777 # print(str(7.7)) # 7.7 # print(str([9, 9, 9, ])) # [9, 9, 9] # print(str({'username': '张三'})) # {'username': '张三'} # print(str(True)) # True # print(str((6, 6, 6))) # (6, 6, 6) # print(str({8, 8, 8, 8})) # {8} # # # print(type(str(777))) # <class 'str'> # print(type(str(7.7))) # <class 'str'> # print(type(str([9, 9, 9, ]))) # <class 'str'> # print(type(str({'username': '张三'}))) # <class 'str'> # print(type(str(True))) # <class 'str'> # print(type(str((6, 6, 6)))) # <class 'str'> # print(type(str({8, 8, 8, 8}))) # <class 'str'> # # # 1.索引取值:单个字符 # s1 = 'my best friends' # print(s1[1]) # y # 2.切片取值:多个字符 # 索引切片的位置默认是从左往右的,如果是负数取值,可以通过参数:来控制 # print(s1[0:4]) # my b 从索引0的位置开始取值,到索引4结束,顾头不顾尾 # 3.支持负数取值 # print(s1[-1]) # s -1就是最后一位 # print(s1[-1:-3:-1]) # sd 可以通过第三个参数的+-1来控制方向 # print(s1[-4:-1]) # end # 4.间隔取值 # print(s1[:]) # my best friends 取值所有 # print(s1[::2]) # m etfins 针对整个字符串,隔一个取一个 # print(s1[0:5:1]) # my be 默认1可以不写 # print(s1[0:5:2]) # m e # 5.统计字符串中字符的个数 # print(len(s1)) # 15 字符串里,空格也算字符 # 6.移除字符串首尾指定的字符 # username = input('username>>>:') # if username == '张三': # print('登录成功') # else: # print('登录失败') # username = ' lisa ' # print(len(username)) # 6 # print(username.strip(), len(username.strip())) # lisa 4 strip默认移除字符串首尾的空格 # cd = username.strip() # print(username, len(username)) # lisa 6 字符串在调用内置方法时,不是改变源数据,而是产生了新的数据 # print(cd, len(cd)) # lisa 4 可以添加一个变量名并进行赋值 # desc1 = '##zhangsan##' # print(desc1.strip('#')) # 移除字符串首尾出现的#号 # print(desc1.lstrip('#')) # 移除字符串左边出现的#号 # print(desc1.rstrip('#')) # 移除字符串右边出现的#号 # 用户登录优化 # username = input('username>>>:').strip() # 先获取用户输入,然后立刻移除首尾的空格,最后绑定给变量名username # if username == 'zs': # print('a') # else: # print('b') # 7.按照指定的字符切割字符串 # info = 'my|hobby|running' # 当字符串中出现了连续的特征符号|,应该考虑切割 # a = info.split('|') # print(a, type(a)) # ['my', 'hobby', 'running'] <class 'list'> split按照指定的字符切割字符串后,结果是一个列表 # aa, bb, cc, = info.split('|') # 1、针对字符串,按照|切割产生一个列表,2、添加3个变量解压赋值依次获取列表里的数据值 # print(info.split('|', maxsplit=1)) # ['my', 'hobby|running'] 从左往右,切割一次 # print(info.rsplit('|', maxsplit=1)) # ['my|hobby', 'running'] 从右往左,切割一次 # 8.字符串大小写 # s2 = 'My Name Is Jack 777 Are You Ok' # print(s2.lower()) # my name is jack 777 are you ok 字母全部转换成小写 # print(s2.upper()) # MY NAME IS JACK 777 ARE YOU OK 字母全部转换成大写 # print(s2.islower()) # False 判断字符串中所有的字母是否全是小写 # print(s2.isupper()) # False 判断字符串中所有的字母是否全是小写 # print('aaa'.islower()) # True # print('AAA'.isupper()) # True # code = 'T9UE33R' # print('这是网页返回的随机验证码:%s' % code) # xxx_code = input('请输入验证码>>>:') # if xxx_code.upper() == code.upper(): # 统一转为大写或者小写,再做比对 # print('ok') # else: # print('no') # 9.字符串的格式化输出 # 方式一:等价于%s占位,没有什么优势 # info = 'my name is {} my age is {}' # print(info.format('le', 32)) # my name is le my age is 32 # 方式二:支持索引取值,并且支持重复使用 # info = 'my name is {0} my age is {1}' # print(info.format('le', 32)) # my name is le my age is 32 同一份数据可以支持多次使用 # 方式三:支持关键字取值,可以看成是按K取值,也支持重复使用 # info = 'my name is {name} my age is {age}' # print(info.format(name='le', age=23)) # my name is le my age is 23 # 方式四:推荐使用,更加方便,可以重复使用,格式化输出就用这个 # name = 'lla' # age = 17 # print(f'my name is {name} my age is {age}') # my name is lla my age is 17 # 10.统计字符串中指定字符出现的次数 # info = 'eeeddfsffgaggafadsfhiaf' # print(info.count('g')) # 3 功能类似于for循环 可以是多个字符 # 11.判断字符串的开头或者结尾 # info = 'baby is best' # print(info.startswith('b')) # True 判断字符串是不是字母b开头的 # print(info.endswith('t')) # True 判断字符串是不是字母t结束的 # 12.字符串的替换 # info = 'hua hua wei NB' # print(info.replace('hua', 'xun')) # xun xun wei NB 从左往右依次全部把hua替换为wei # print(info.replace('hua', 'xun', 1)) # xun xun wei NB 从左往右指定个数把hua替换为wei # 13.字符串的拼接 # info1 = 'hua' # info2 = 'wei' # print(info1+info2) # huawei 字符串支持+号进行拼接 适用于字符串量小 # print(info1 * 5) # huahuahuahuahua 也支持乘号拼接 # print(''.join(['hua', 'wei', '666'])) # huawei666 字符串join方法拼接 适用于字符串量大 # print('|'.join(['hua', 'wei', '666'])) # hua|wei|666 # print(''.join(['hua', 'wei', 666])) # 列表中的数据必须全是字符串类型,否则会报错 # 14.判断字符串中是否是纯数字 # print('123'.isdigit()) # True # print('123a'.isdigit()) # False # print(''.isdigit()) # False # age = input('age>>>:') # # 先判断是不是纯数字 # if age.isdigit(): # age = int(age) # print('ok') # else: # print('你是不是傻') # 15.查找某个字符对应的索引值 # info = 'hua wei NB' # print(info.index('i')) # 6 # print(info.find('i')) # 6 # index查找索引,如果没有则直接报错 # print(info.index('i', 0, 5)) # find查询索引,如果没有则会返回-1 # print(info.find('i', 0, 5)) # -1 # 16.正文相关操作 # info = 'my name is hony' # print(info.title()) # My Name Is Hony 将所有的英文首字母大写 # print(info.capitalize()) # My name is hony 将第一个英文的首字母大写
列表数据类型转换: # 数据类型转换: # print(type([list(999)])) # 数字无法转换为列表 # print(type(list(999.9))) # 小数无法转换为列表 # print(type(list('666kong')), list('666kong')) # <class 'list'> ['6', '6', '6', 'k', 'o', 'n', 'g'] 列表 # print(type(list({'name': 'huawei', 'pwd': 666})), list({'name': 'huawei', 'pwd': 666})) # <class 'list'> ['name', 'pwd'] 字典 # 能够被for循环的数据类型都可以转换成列表 # 需要掌握的方法 # l1 = ['huawei', 'alibb', 'ten', 'hengda'] # 1.索引取值 # print(l1[0]) # huawei 取第一个值 # print(l1[-1]) # hengda 取最后一个值 # 2.切片操作 # print(l1[0:3]) # ['huawei', 'alibb', 'ten'] 取前3个值 # print(l1[:]) # ['huawei', 'alibb', 'ten', 'hengda'] 取所有的值 # 3.间隔/方向 # print(l1[::2]) # ['huawei', 'ten'] 隔一个取一个 # 4.统计列表中数据值的个数 # print(len(l1)) # 4
# 1.基于字符串充当数据库完成用户登录(基础练习) # data_source = 'jason|123' # 一个用户数据 # 获取用户用户名和密码 将上述数据拆分校验用户信息是否正确 """ 主体功能是用户登录功能 先获取用户名和密码 然后在进行数据比对 """ # 1.先定义一个类似于数据库的数据 data_source = 'huawei|666' # 2.获取用户输入的用户名和密码 username = input('username>>>:').strip() # 获取用户名,并移除输入内容首尾的空格 password = input('password>>>:').strip() # 获取密码,并移除输入内容首尾的空格 # 3.切割数据库的数据得到正确的用户名和密码,然后再进行比对 correct_name, correct_password = data_source.split('|') # 按照字符串内置方法split'|'切割字符串,切割完成后得到一个列表,获取到的是['huawei','666'],使用解压赋值依次把列表里的数据赋值给变量名correct_name, correct_password # 4 比对用户名和密码 if username == correct_name: # 如果输入的用户名和密码与数据库里的一致,那么打印登录成功 if password == correct_password: print('登录成功') else: print('密码输入错误,登录失败') # 如果比对不一致,则无法登录,并通过if嵌套告知用户,具体是用户名错误还是密码错误 else: print('用户名输入错误,登录失败')