数据类型的内置方法介绍
可以理解为各个数据类型自带的功能(每个人都有不同的特长)
使用数据类型的内置方法统一采用句点符号
数据类型.方法()
eg:
name.print()
可以通过编辑器自动提示来查看某个数据类型的内置方法
整型(int)
1.整型就是数字,没有内置方法
2.类型转换 int(需要转换的数据)
print(int(123))
print(int(1.23))
print(int('123'))
print(int(11a11))
print(int('11.11'))
3.进制转换
十进制转其他进制
print(bin(100))
print(oct(100))
print(hex(100))
其他进制转十进制
print(int(0b1100100))
人为定制进制
print(int('0b1100100',2))
print(int('100',8))
print(int('100',16))
浮点型(float)
1.类型转换 float(需要转换的数据)
print(float(111))
print(type(float('111.6')))
print(float('11a'))
print(float('12.34.2'))
2.针对布尔值的特殊情况
print(float(True))
print(float(False))
print(int(True))
print(int(False))
3.补充说明
print(12.34 * 1.1)
字符串(str)
1.类型转换 str(需要转换的数据) 所有类型的数据都可以转成字符串
print(str(11))
print(str(11.11))
print(str([12,13,14]))
print(str({'name':'zhangsan','age':18}))
print(str((1,2,3,4)))
print(str({1,2,3,4}))
print(str(True))
2.索引取值与切片取值
s1 = 'hello world'
索引取值:只能取单个字符,支持反向取值
print(s1[1])
print(s1[-1])
切片取值:可以一次取多个值,支持反向取值
print(s1[1:2])
print(s1[1:8])
print(s1[-1:-3])
print(s1[-1:-3:-1])
print(s1[-3:-1])
3.间隔/方向
print(s1[:])
print(s1[::2])
print(s1[::3])
print(s1[1:4:1])
print(s1[1:8:2])
4.统计字符串中字符
print(len('hello'))
print(len(s1))
5.移除字符串首尾指定的字符 .strip() 可以用于清除用户填写信息结束时不注意多打的的空格
name = ' jason '
print(len(name))
print(name.strip(),len(name.strip()))
hobby = '%^book^%'
print(hobby.strip())
print(hobby.strip('%'))
print(hobby.strip('^'))
print(hobby.lstrip('%'))
print(hobby.rstrip('%'))
6.按照指定的字符切割字符串 .split()
info = 'zhangsan|19|book'
print(info.split('|'))
print(type(info.split('|')))
name,age,hobby = info.split('|')
print(name,age,hobby)
print(info.split('|',maxsplit=1))
print(info.rsplit('|',maxsplit=1))
7.字符串大小写相关 .lower() .upper()
s2 = 'HeLLo Big BAby 666 你过的还好吗'
print(s2.lower())
print(s2.upper())
print(s2.isupper())
print(s2.islower())
print('he12吉llo1*2'.islower())
code = 'QwEr'
user_input = input('请输入验证码')
code = code.lower()
user_input = user_input.lower()
if code == user_input:
print('验证码正确')
else:
print('验证码错误')
8.字符串的格式化输出 .format()
redt1 = 'my name is {} my age is {}'
print(redt1.format('zhangsan',19))
redt2 = 'my name is {0} my age is {1}{1}{0}'
print(redt2.format('zhangsan',19))
redt3 = 'my name is {name} my age is {age}{age}'
print(redt3.format(name='zhnagsan',age=19))
name = 'zhangsan'
age = 19
print(f'my name is {name}, my age is {age} {name} {age}')
9.统计字符串中指定字符出现的次数 count()
res = 'sdashdjasdwjjkashdjasdjqwhasjdjahdjwqhdjkasdhwsdaadadadadad'
print(res.count('h'))
print(res.count('ad'))
10.判断字符串的开头或者结尾
res = 'jason say ha ha ha heiheihei'
print(res.startswith('jason'))
print(res.startswith('j'))
print(res.startswith('b'))
print(res.endswith('heiheihei'))
print(res.endswith('hei'))
print(res.endswith('h'))
11.字符串的替换 .replace()
res = 'zhangsan is 大 sb'
print(res.replace('n','o'))
print(res.replace('n','o',1))
12.字符串的拼接 join()
res1 = 'aaa'
res2 = 'bbb'
print(res1 + res2)
print(res1 * 3)
print('%%'.join([res1,res2,'qqq']))
print('%%'.join([res1,res2,19]))
13.判断字符串中是否是纯数字
print('123'.isdigit())
print('123a'.isdigit())
print(''.isdigit())
14.查找某个字符对应的索引值 find() index()
res = 'hello world '
print(res.index('e'))
print(res.index('o'))
print(res.find('k'))
15.正文相关操作
res = 'my name is jason'
print(res.title())
print(res.capitalize())
列表(list)
1.类型转换
print(type(list('123243jasdsad')), list('123243jasdsad'))
print(type(list({'name':"jason",'pwd':123})), list({'name':"jason",'pwd':123}))
2.索引取值
print(l1[0])
print(l1[-1])
3.切片操作
print(l1[0:3])
print(l1[:])
print(l1[-4:-1])
4.间隔/方向
print(l1[::2])
5.统计列表中数据值的个数
print(len(l1))
l1 = ['jason','tony','adele','taylor','jerry']
l2 = [11,33,22,55,77,99,44]
1.统计列表中元素的个数
print(len(l1))
6.增加
6.1 尾部追加 .append()
res = l1.append('gaga')
print(res)
l1.append('gaga')
print(l1)
l2.append([1,2,3])
print(l2)
6.2 任意位置插入 .insert()
l1.insert(2,'gaga')
print(l1)
l2.insert(4,[1,2,3])
print(l2)
6.3 扩展列表
new_l1 = ['a','b','c','d']
new_l2 = [1,2,3]
方式1 for循环遍历再利用append按部就班得在尾部追加值
for i in new_l2:
new_l1.append(i)
print(new_l1)
方式2 +号拼接
print(new_l1 + new_l2)
new_l1.extend(new_l2)
print(new_l1)
7.修改
l1[4] = 'mary'
print(l1)
8.删除 del()
方式1 : 通过索引删除
del l1[0]
print(l1)
方式2 ;remove() 指名道姓删除
res = l1.remove('jason')
print(l1)
print(l1.remove('11'))
方式3 pop() 先取出数据值,可以使用之后再删 默认取出最后面的值
res = l1.pop()
print(res)
print(l1)
print(l2.pop(2))
9.查看数据值对应的索引值 index()
print(l1.index('adele'))
10.统计某个数据值出现的个数 count()
print(l1.count('adele'))
11.排序 sort()
l2.sort()
print(l2)
l2.sort(reverse=True)
print(l2)
12.翻转
l1.reverse()
print(l1)
13.比较运算
list_l1 = [11,22,33,44]
list_l2 = [33,22,11]
print(list_l1 > list_l2)
print([1,2,3] > ['a','b'])
print(['a','b','c'] > ['A'])
元组(tumple)
1.类型转换 支持for循环的数据类型都可以转成元组
print(tuple(['aq',3,4,9]))
print(tuple({'name':'jack','age':19}))
2.索引相关操作
t1 = (1,2,3,4)
print(t1[0])
3.统计元组内数据值的个数
print(len(t1))
4.统计元组内特定数据值的个数
print(t1.count(1))
5.查与改 '''元组的索引不能更改绑定的地址'''
t1[0] = 11
t2 = (1,2,3,[1,2,3])
t2[-1].append(22)
print(t2)
字典(dict)
字典很少转换类型,通常都是直接定义
dict = {
'name':'jason',
'age':19,
'hobby':'book'
}
1.字典内k:v键值对是无序的 因此不能索引取值
2.取值操作
print(dict['name'])
print(dict.get('xxx'))
3.统计字典中键值对的个数
print(len(dict))
4.修改数据 若原字典有该key值,则修改
dict['name'] = 'jasonnb'
print(dict)
5.新增数据 若原字典没有该key值,则添加
dict['password'] = '123'
print(dict)
6.删除数据
方式1
del dict['name']
print(dict)
方式2
res = dict.pop('name')
print(res,dict)
7.快速获取键 值 键值对数据
print(dict.keys())
print(dict.values())
print(dict.items())
8.修改字典数据 键存在则是修改 键不存在则是新增
dict.update({'name':'jason01'})
print(dict)
dict.update({'password':'123'})
print(dict)
9.快速构造字典 给的值默认情况下所有的键都用一个
res = dict.fromkeys([1, 2, 3], None)
print(res)
new_dict = dict.fromkeys(['name', 'pwd', 'hobby'], [])
new_dict['name'] = []
new_dict['name'].append(123)
new_dict['pwd'].append(123)
new_dict['hobby'].append('read')
print(new_dict)
res = dict.fromkeys([1, 2, 3], 234234234234234234234)
print(id(res[1]))
print(id(res[2]))
print(id(res[3]))
10.键存在则获取键对应的值 键不存在则设置 并返回设置的新值
res = dict.setdefault('name','jason')
print(res,dict)
集合(set)
'''去重'''
s1 = {1,1,1,12,2,2,2,3,4,4,4,4,5,6,6}
print(s1)
l1 = ['jack','jack','tony','tony','mack']
s2 = set(l1)
print(s2)
print(list(s2))
'''关系运算'''
f1 = {'jason','tony','adele','lili'}
f2 = {'jason','tony','taylor','kevin'}
print(f1 & f2)
print(f1 - f2)
print(f2 - f1)
print(f1 | f2)
print(f1 ^ f2)
s1 = {1,2,3,4,5,6}
s2 = {1,2,3}
print(s1 > s2)
print(s1 < s2)
可变与不可变类型
为什么字符串调用内置方法产生一个新的值,二列表则会改变自身
1.可变类型 list dict
l1 = [1,2,3,4]
print(id(l1))
res = l1.append(5)
print(l1,id(l1))
2.不可变类型 int str float
s1 = 'abcdef'
print(id(s1))
s1 = s1.lower()
print(s1,id(s1))
作业
1.基于字符串充当数据库完成用户登录(基础练习)
data_source = 'jason|123'
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确
'''
data_source = 'jason|123' # 一个用户数据
data_source = data_source.split('|') #将所给数据的|去掉,方便判断
username = input('请输入用户名')
password = input('请输入密码')
if data_source[0] == username and data_source[1] == password: #根据索引取值判断输入是否正确
print('密码正确,欢迎')
else:
print('用户名或密码错误')
'''
2.基于列表充当数据库完成用户登录(拔高练习)
data_source = ['jason|123', 'kevin|321','oscar|222']
'''
data_source = ['jason|123', 'kevin|321', 'oscar|222']
username = input('请输入用户名')
password = input('请输入密码')
user = ('|'.join([username,password])) #先把用户输入的内容转成数据库中的数据格式再判断
if user in data_source:
print('登陆成功')
else:
print("用户名或密码错误")
'''
3.利用列表编写一个员工姓名管理系统
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
'''
staff = ['jason','jack','tony']
while True:
print('请输入您的操作:1.添加用户 2.查看所有用户 3.删除用户')
text = input()
if text == '1': # 添加用户
staff_name = input('请输入您要添加的员工姓名')
staff.append(staff_name)
print(f'{staff_name}已被添加到系统中')
elif text == '2': # 查看所有用户
print(staff)
elif text == '3': # 删除用户
del_name = input('请输入您要删除的员工姓名')
staff.remove(del_name)
print(f'{del_name}已被删除')
'''
2. 去重下列列表并保留数据值原来的顺序
eg: [1, 2, 3, 2, 1]
去重之后[1, 2, 3]
'''
l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5]
l2 = []
for i in l1:
if i not in l2:
l2.append(i)
print(l2) # [2, 3, 1, 4, 5, 6]
'''
3.
有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons = {'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}
1.
求出即报名python又报名linux课程的学员名字集合
2.
求出所有报名的学生名字集合
3.
求出只报名python课程的学员名字
4.
求出没有同时这两门课程的学员名字集合
'''
pythons = {'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}
print(pythons & linuxs)
print(pythons | linuxs)
print(pythons - linuxs)
print(pythons ^ linuxs)
'''