【修仙】第一卷 初出茅庐 第十章 方法

前情提要

整型与浮点型的内置方法

关键字整型 int 浮点型 float
整型和浮点型都没有内置方法,只有类型转换
python对数字不是很敏感 会有误差

字符串的内置方法

索引取值相关方法
分割:split()
拼接:join()  +
获取字符串长度:len()
大小写转换:upper() lower() isupper() islower()
获取单个字符数量:count()
判断是否纯数字:isdigit()
判断首尾字符:starswith() endswith()
删除首尾指定字符:strip() lstrip() rstrip()
替换:replace()
字符串格式化输出:format()

列表内置方法

索引相关方法

列表内置方法补充

字典内置方法

元组内置方法

集合内置方法

可变类型和不可变类型

列表内置方法补充

1.统计数据个数
len()
l1 = [1, 2, 3, 4, 5]
print(len(l1))  # 5
2.增加数据
2.1 尾部追加数据
	append()  括号内无论写什么数据类型 都当做一个数据值追加
	l1 = [1, 2, 3, 4, 5]
	l1.append(6)
	print(l1)  # [1, 2, 3, 4, 5, 6]
	l1.append([1, 2, 3])
	print(l1)  # [1, 2, 3, 4, 5, 6, [1, 2, 3]]
2.2 任意位置插入
	insert()  括号内无论写什么数据类型 都当做一个数据值插入
	l1 = [1, 2, 3, 4, 5]
	l1.insert(2, 4)
	print(l1)  # [1, 2, 4, 3, 4, 5]
2.3 扩展列表
	方式1:for循环
		l1 = [1, 2, 3, 4]
		l2 = [5, 6, 7]
		for i in l2:
			l1.append(i)
		print(l1)  # [1, 2, 3, 4, 5, 6, 7]

	方式2:
		print(l1 + l2)  # [1, 2, 3, 4, 5, 6, 7]

	方式3:(推荐)
		l1.extend(l2)  # 括号里面必须是支持for循环的数据类型  可迭代对象
		print(l1)
3.查询数据与修改数据
索引取值查询
修改
l1 = [1, 2, 3, 4, 5]
l1[0] = 13
print(l1)  # 13, 2, 3, 4, 5
4.删除数据
4.1通用删除方法  del
l1 = [1, 2, 3, 4, 5]
def l1[0]  # 通过 del 索引即可
print(l1)  # [2, 3, 4, 5]

4.2指名道姓删除  remove()
l1 = [1, 2, 3, 4, 5]
l2 = ['jason', 'tony', 'kevin']
l1.remove(2)
l2.remove('kevin')
print(l1)  # [1, 3, 4, 5]
print(l2)  # ['jason', 'tony']

4.3先取出数值再删除  pop()
l1 = [1, 2, 3, 4, 5]
res = l1.pop()  # 默认取出列表末尾数据数值 然后再删
print(l1, res)  # [1, 2, 3, 4] 5
res = l1.pop(2)
print(l1, res)  # [1, 2, 4] 3
5.查询数据值对应的索引值  index()
l1 = ['jason', 'tony', 'kevin']
l2 = ['jason', 'tony', 'jason']
print(l1.index('jason'))  # 0
print(l2.index('jason'))  # 0  只输出第一个取到的数据位置
6.统计某个数据出现的次数  count()
l1 = ['jason', 'jason', 'jason', 'tony']
print(l1.count('jason'))  # 3
7.排序  sort()
l1 = [2, 1, 4, 3, 5]
print(l1.sort())  # None
l1.sort()
print(l1)  # [1, 2, 3, 4, 5]  默认为升序
l1.sort(reverse=True)  # [5, 4, 3, 2, 1] 降序
8.反转 reverse()
l1 = [1, 2, 3, 4, 5]
l1.reverse()
print(l1)  # [5, 4, 3, 2, 1]

字典的内置方法

关键字:dict
类型转换:(了解即可)
print(dict([('name', 'jason'), ('age', 18)]))  # {'name': 'jason', 'age': 18}
print(dict(name='jason', age=18))  # {'name': 'jason', 'age': 18}
内置方法:
1.取值操作
dict = {'username': 'jason', 'age': 18}
print(dict['username'])  # jason  不推荐,当k不存在时报错
print(dict.get('username'))  # jason 推荐 若k不存在默认返回None
print(dict.get('xxx'))  # None
print(dict.get('xxx', '没有该Key值'))  # 没有该Key值 k不存在时 返回值可修改
2.统计字典内键值对个数  len()
dict = {'username': 'jason', 'age': 18}
print(len(dict))  # 2
3.修改数据
dict = {'username': 'jason', 'age': 18}
dict['username'] = 'tony'  # 键存在则修改
print(dict)  # {'username': 'tony', 'age': 18}
4.添加数据
dict = {'username': 'jason', 'age': 18}
dict['hobby'] = ['read', 'run']  # 键不存在则增加
print(dict)  # {'username': 'jason', 'age': 18, 'hobby': ['read', 'run']}
5.删除数据
方式一:del
dict = {'username': 'jason', 'age': 18}
del dict['username']
print(dict)  # {'age': 18}

方式二:pop()
dict = {'username': 'jason', 'age': 18}
res = dict.pop()
print(dict, res)  # {'username': 'jason'} 18

方式三:popitem() 随机删除
6.快速获取键 值 键值对数据  keys()  values()  items()
dict = {'username': 'jason', 'age': 18}
print(dict.keys())  # dict_keys(['username', 'age'])
print(dict.values())  # dict_keys(['jason', 18])
print(dict.items())  # dict_keys([('username', 'jason'), ('age', 18)]
7.修改字典数据 键存在则修改 不存在则新增 update()
dict = {'username': 'jason', 'age': 18}
dict.update({'username': 'jasonNB'})
print(dict)  # {'username': 'jasonNB', 'age': 18}
dict.update({'hobby': ['read', 'run']})
print(dict)  # {'username': 'jasonNB', 'age': 18, 'hobby': ['read', 'run']}
8.快速构造字典  给的值默认情况下所有的键都指向同一地址
res = dict.formkeys([1, 2, 3], None)
print(res)  # {1: None, 2: None, 3: None}
res = dict.formkeys(['username', 'age'], [])
res['username'].append('jason')
print(res)  # {'username': ['jason'], 'age': ['jason']}  因为指向的是同一个地址 所以都改变了
9.setdefault()  键存在则获取键对应的值 键不存在则设置 并返回设置的新值
dict = {'username': 'jason', 'age': 18}
res = dict.setdefault('username', 'jasonNB')
print(dict, res)  # {'username': 'jason', 'age': 18} jason
res = dict.setdefault('hobby', 'read')
print(dict, res)  # {'username': 'jason', 'age': 18, 'hobby': 'read'} read

元组的内置方法

关键字:tuple
类型转换:支持for循环的数据类型可以转元组
注意事项:当元组只有一个数据时,需在数据结尾加, 否则生成的就是该数据数据类型的数据
	t1 = (12)
	t2 = (12,)
	print(type(t1))  # int
	print(type(t2))  # tuple
内置方法:
	1.索引相关操作
	2.统计元组内数据值的个数 len()
	3.查与改
	t1 = (11, 22, 33, 44, 55, 66)
	print(t1[0])  # 11
	t1[0] = 1  # 报错 不能改 注:这种修改改的是绑定的地址
	面试题:
	t1 = (11, 22, 33, [11, 22])
	t1[-1].append(33)
	print(t1)  # (11, 22, 33, [11, 22, 33]) 注:append只是给list中添加数据 并没有改变地址绑定

集合内置方法

关键字:set
类型转换:
	支持for循环的 必须是不可变类型
1.定义空集合需要使用关键字才可以
2.集合内数据必须是不可变类型(整型 浮点型 字符串 元组 布尔值)
作用:
	去重
	关系运算
内置方法:
s1 = {'jason', 'kevin', 'tony', 'jerry'}
s2 = {'jason', 'tony', 'oscar', 'carsh'}
1.求共同好友
print(s1 & s2)  # {'jason', 'tony'}
2.求s1 s2各自独有的好友
print(s1 - s2)  # {'kevin', 'jerry'}
print(s2 - s1)  # {'oscar', 'carsh'}
3.求s1 s2 所有的好友
print(s1 | s2)  # {'jason', 'kevin', 'tony', 'jerry', 'oscar', 'carsh'}
4.求s1 s2不共同拥有的好友
print(s1 ^ s2)  # {'kevin', 'jerry', 'oscar', 'carsh'}
5.子集 父集
s1 = {1, 2, 3, 4, 5}
s2 = {1, 2, 3}
s3 = {3, 2, 1}
print(s1 > s2)  # True
print(s1 > s3)  # True 集合是无序的

可变类型和不可变类型

"""
为什么字符串调用内置方法是产生新的值
列表调用内置方法是改变自身
"""
1.可变类型  list 
    值改变(内置方法) 内存地址可以不变
2.不可变类型  str  int  float bool 
    值改变 内存地址肯定变

作业

# 1.
# 利用列表编写一个员工姓名管理系统
# 输入1执行添加用户名功能
# 输入2执行查看所有用户名功能
# 输入3执行删除指定用户名功能
# ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
# 提示: 循环结构 + 分支结构
# 拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写
# 不会没有关系)
# 定义用户名列表

# 简要
username_list = []
while True:
    print("""
    1.添加用户名
    2.查看所有用户名
    3.删除用户名
    4.退出
    """)
    # 获取用户选择
    choice = input('请输入你的选择>>>:').strip()
    if choice == '1':
        # 获取输入的用户名
        username = input('请输入需要添加的用户名>>>:').strip()
        # 判断用户名是否存在
        for u in username_list:
            if u == username:
                print('用户已存在')
                break
        else:
            username_list.append(username)
            print('添加用户名成功')
    elif choice == '2':
        # 直接查询全部
        for u in username_list:
            print(u, end=' ')
    elif choice == '3':
        # 获取输入的鹅用户名
        username = input('请输入需要删除的用户名>>>:').strip()
        # 判断用户名是否存在
        for u in username_list:
            if u == username:
                # 调用remove指定删除用户
                username_list.remove(username)
                print('删除成功')
                break
        else:
            print('用户不存在')
    elif choice == '4':
        break
    else:
        print('请输入正确编号')





# 提高
user_dict = {}
while True:
    print("""
    1.添加用户
    2.修改用户
    3.删除用户
    4.查询用户
    5.退出系统
    """)
    choice = input('请输入你想要进行的操作编号>>>:').strip()
    if choice == '1':
        # 获取输入的用户名
        username = input('请输入需要添加的用户名>>>:').strip()
        # 判断用户名是否存在
        for u in user_dict:
            if u == username:
                print('用户已存在')
                break
        else:
            user_dict_temp = {'username': username, 'password': 123, 'age': None, 'gender': 'male'}
            user_dict[username] = user_dict_temp
            print('添加用户名成功')
    elif choice == '2':
        # 获取输入的用户名
        username = input('请输入需要修改的用户名>>>:').strip()
        # 判断用户名是否存在
        for u in user_dict:
            if u == username:
                user_dict_temp = user_dict.get(u)
                print(f"""
        --------修改前-------
        用户名:{user_dict.get(u).get('username')}
        密码:{user_dict.get(u).get('password')}   
        年龄:{user_dict.get(u).get('age')}  
        性别:{user_dict.get(u).get('gender')}   
        --------修改前-------
                """)
                print('若不想修改则直接回车')
                name = input('用户名修改为>>>:').strip()
                pwd = input('密码修改为>>>:').strip()
                age = input('年龄修改为>>>:').strip()
                gender = input('性别修改为(male/female)>>>:').strip()
                if name:
                    user_dict_temp['username'] = name
                if pwd:
                    user_dict_temp['password'] = pwd
                if age:
                    user_dict_temp['age'] = age
                if gender:
                    user_dict_temp['gender'] = gender
                print(f"""
        --------修改后-------
        用户名:{user_dict_temp.get('username')}
        密码:{user_dict_temp.get('password')}   
        年龄:{user_dict_temp.get('age')}  
        性别:{user_dict_temp.get('gender')}   
        --------修改后-------
                """)
                is_update = input('是否确认修改(y确认,任意输入取消)>>>:').strip()
                if is_update == 'y':
                    user_dict[username] = user_dict_temp
                    print('修改成功')
                    break
                else:
                    print('取消成功')
                    break
        else:
            print('用户不存在')
    elif choice == '3':
        # 获取输入的用户名
        username = input('请输入需要删除的用户名>>>:').strip()
        # 判断用户名是否存在
        for u in user_dict:
            if u == username:
                print(f"""
            --------用户:{u}-------
            密码:{user_dict.get(u).get('password')}   
            年龄:{user_dict.get(u).get('age')}  
            性别:{user_dict.get(u).get('gender')}   
            -----------------------
                    """)
                is_delete = input('请确认删除(y确认,任意字符取消)>>>:').strip()
                if is_delete == 'y':
                    user_dict.pop(username)
                    print('删除成功')
                    break
                print('取消删除')
                break
        else:
            print('用户不存在')
    elif choice == '4':
        print("""
        1.查询指定用户
        2.查询所有用户
        """)
        choice = input('请选择查询的类型编号(任意输入退出)>>>:').strip()
        if choice == '1':
            # 获取输入的用户名
            username = input('请输入需要查询的用户名>>>:').strip()
            # 判断用户名是否存在
            for u in user_dict:
                if u == username:
                    print(f"""
            --------用户:{u}--------
            密码:{user_dict.get(u).get('password')}
            年龄:{user_dict.get(u).get('age')}
            性别:{user_dict.get(u).get('gender')}
            ------------------------
                    """)
                    break
            else:
                print('用户不存在')
        elif choice == '2':
            for u in user_dict:
                print(f"""
            --------用户:{u}--------
            密码:{user_dict.get(u).get('password')}
            年龄:{user_dict.get(u).get('age')}
            性别:{user_dict.get(u).get('gender')}
            ------------------------
                    """)
        else:
            print('取消查询')
    elif choice == '5':
        break
    else:
        print('请输入正确的编号')

# 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:
    for j in l2:
        if j == i:
            break
    else:
        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课程的学员名字集合
print(pythons & linuxs)  # {'gangdan'}
#   2.
# 求出所有报名的学生名字集合
print(pythons | linuxs)  # {'oscar', 'ricky', 'gangdan', 'kevin', 'biubiu', 'tony', 'kermit', 'jason'}
#   3.
# 求出只报名python课程的学员名字
print(pythons - linuxs)  # {'kevin', 'biubiu', 'jason', 'ricky', 'oscar'}
#   4.
# 求出没有同时这两门课程的学员名字集合
print(pythons ^ linuxs)  # {'biubiu', 'tony', 'kevin', 'oscar', 'kermit', 'ricky', 'jason'}

posted on 2022-06-27 16:39  祁珏  阅读(38)  评论(0)    收藏  举报

导航