6.27内容整理和概述

6.27内容整理和概述

上次作业回顾

第一题:

基于字符串充当数据库完成用户登录(基础练习):
data_source = 'jason|123' # 一个用户数据
获取用户用户名和密码 将上述数据拆分校验用户信息是否正确

本人代码:
	data_source = 'jason|123'
    data = data_source.split('|',maxsplit=1)	# 1
    name = data[0]	# 2
    password = data[1]	# 3
    name_client = input("请输入id")
    password_client = input("请输入密码")
    if name == name_client and password == password_client:
        print("登录成功")
    else: print("账号或者密码错误")	
        
Jason代码:
    data_source = 'jason|123' 
    username = input('username>>>:').strip()
    password = input('password>>>:').strip()
    real_name, real_pwd = data_source.split('|')
    if username == real_name and password == real_pwd:
            print('登录成功')
        else:
            print('用户名或密码错误')

思考:
	1. 我的代码1,2,3标志行完全可以用一行代码编辑,直接使用切割+解压赋值。但是当数据类型多的时候,分割有限时,我的这个写法可能要好一点。

第二题:

基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']

本人代码:
    j=0 # 6
    name_client = input("请输入id")
    password_client = input("请输入密码")
    data_source = ['jason|123','kevin|321','oscar|222']
    k = len(data_source)	# 1
    for i in range(k):	# 2
        data = data_source[i].split('|',maxsplit=1)	# 3
        name = data[0]	# 4
        password = data[1]	# 5
        if name == name_client and password == password_client:
            print("登录成功")
            break
        else: j += 1
    if j>=k:	# 7
        print("登录失败")	# 8

Jason代码:
    data_source = ['jason|123', 'kevin|321','oscar|222']
    data_source = ['jason|123', 'kevin|321', 'oscar|222']
    username = input('username>>>:').strip()
    password = input('password>>>:').strip()
    for data in data_source: 
        real_name, real_pwd = data.split('|') 
        if username == real_name and password == real_pwd:
            print('登录成功')
            break 
    else:
    	print('用户名或密码错误')
        
思考:
	1.我的代码1,2标识行,完全没必要换成int和range进行for循环,可以直接换成for data in data_source: 因为for循环支持遍历列表,字符串,元组,集合,字典。还是对for循环理解不够通透,导致了一些多余的代码。
	2.跟上题一样3,4,5可以直接采用切割+解压赋值的方法,不多说了。
    3.代码6,7,8行,可以直接替换成else+for循环,效果:循环体按照提前定义好的条件正常结束,则会执行,没必要用到计数器。之前忽视它的作用,学到了,学到了。
    

今日内容概述

内容概要

  • 列表内置方法
  • 字典内置方法
  • 元组内置方法
  • 集合内置方法
  • 可变类型与不可变类型

列表内置方法

"""注意:列表在调用内置方法之后不会产生新的值,而是修改的自身"""
关键字:list()
类型转换:字符串型,元组型,集合型,字典型
方法:
	1..索引取值	eg:L(i)
		正方向从0开始,从左到右
		负方向从-1开始,从右到左
	2.切片操作(间隔/方向):s1[ i , j , k ]
		" i "正数代表取值从左到右的开始位置,负数代表取值从右到左的开始位置
		" j "正数代表取值从左到右的结束位置,负数代表取值从右到左的结束位置
		" k "正负代表切片方向,大小代表步长
    3.统计列表数据值个数
    	实现方法:len(),eg:l1 = ['jason', 'kevin', 'oscar', 'tony']
    4.增删改查之增:
    	4.1 append():可以在列表尾部添加一个任意类型的数据
			结构:列表.append(数据)
	    4.2 insert():可以在列表任意位置插入一个任意类型的数据
 			结构:列表.insert(索引,数据)
    	4.3 extend():将两个列表相结合形成一个列表
			结构:列表.extend(被加列表)
             引申:另一种扩展:列表+列表
    5.增删改查之查:
		5.1:即使方法1的索引取值
		5.2:index():查看数据在列表的索引值
			结构:列表.index(数据) 
			ps:当index方法找不到数据时,报错
    6.增删改查之删:
		6.1 del:删除索引部分或者整个列表
			结构:del 列表[索引值] / del 列表
		6.2 remove():称为“指名道姓”删除
			结构:列表.remove(数据值)
		6.3 pop():取出来,再删除
			结构:列表.pop(索引值)
			Ps:当pop()方法没有索引值时,默认取出列表尾部数据值
	7.增删改查之改:
    	7.1 结构:列表[索引] = 需要改的数据
	8.统计数据值出现的次数:
		实现方法:列表.count(需统计的数据)
	9.排序:
    	实现方法:
        	1.升序:列表.sort()
            2.降序:列表.sort(reverse=True)
	10.翻转:
    	实现方法:列表.reverse() #前后颠倒
	11.比较运算:	#输出布尔型值
    	1.当数据类型为int类型或者布尔型时,按照位置顺序比对
        2.不同类型之间默认无法比较
        3.还有一些字符编码的东西,暂时不需要了解

元组内置方法

关键字:tuple()
类型转换:字符串型,元组型,集合型,字典型,列表
	"注意":当元组内只有一个数据值的时候 逗号不能省略.如果省略了 那么括号里面			  是什么数据类型就是什么数据类型
方法:
	1.索引取值:元组[索引值]   
	2.统计元组内数据值的个数:len(元组)
    
"切记":元组的索引不能改变绑定的地址	
	eg:
        t1 = (11, 22, 33, [11, 22])
        t1[-1].append(33)
        print(t1)  # (11, 22, 33, [11, 22, 33])

字典内置方法

关键字:dict()
类型转换:字典很少涉及到类型转换 都是直接定义使用
	"特例":
    	print(dict([('name', 'jason'), ('pwd', 123)]))
        print(dict(name='jason', pwd=123))
方法:
	1.取值:get(key,"键不纯在时,返回什么,默认为None")
		补充:字典[key] #不推荐使用 键不存在会直接报错
	2.统计字典中键值对的个数:len(字典)
	3.修改数据:字典[key] = 需要修改的数据 
	4.新增数据:字典[一个不存在的key] = 数据 
	5.删除数据:
		1.del 字典[key]
		2.字典.pop(key)
		3.字典.popitem() # 随机删除
	6.快速获取键 值 键值对数据
		1.字典.keys()	#获取字典所有的k值 结果当成是列表
		2.字典.values()	#获取字典所有的v值 结果当成是列表
		3.字典.items()	#获取字典kv键值对数据 组织成列表套元组
	7.快速构造字典
		eg: dict.fromkeys([1, 2, 3], None) #给的值默认情况下所有的键都用一个
	8.设置默认v值:eg:字典.setdefault('username', 'jasonNB')
		#键存在则获取键对应的值 键不存在则设置 并返回设置的新值
相关细节:
	1.字典内k:v键值对是无序的
	2.K是对V的描述性性质的信息一般是字符串
	3.K其实只要是不可变类型都可以

集合内置方法

关键字:set()
类型转换:字符串型,元组型,集合型,字典型,列表
方法:
	1.自带效果:去重+自动排序
		eg:s1 = {1, 2, 12, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4}
			输出:{1, 2, 3, 4, 5, 12}
	2.取双方共同数据:字典 & 字典
	3.取一方独有数据:字典 - 字典
	4.取双方所有数据:字典 | 字典
	5.取双方独有数据:字典 ^ 字典
	6.父子集:字典 > 字典 # 输出布尔型
相关细节:
	1.数据必须是不可变类型
	2.定义空集合需要使用关键字才可以

可变和不可变类型

可变类型:值改变(内置方法) 内存地址可以不变 
	哪些:
    	1.字典
    	2.列表
	    3.集合
不可变类型:值改变(内置方法) 内存地址肯定变
	哪些:
    	1.字符串
        2.整型
        3.浮点型
        4.布尔型
        5.元组

今日作业

第一题:

​ 利用列表编写一个员工姓名管理系统

list_staff = []
print("欢迎使用本系统")
print("输入0退出系统")
print("输入1执行添加用户名功能")
print("输入2执行查看所有用户名功能")
print("输入3执行删除指定用户名功能")
while True:
    order = input("请输入数字指令:")
    if order.isdigit() == True:
        if int(order) == 0:
            print("已退出系统")
            break
        if int(order) == 1:
            new_name = input("请输入新的用户名:")
            list_staff.append(new_name)
            print("新用户添加成功")
        if int(order) == 2:
            print(list_staff)
        if int(order) == 3:
            del_name = input("请输入需要删除的用户名:")
            list_staff.remove(del_name)
            print("用户删除成功")
    else:
        print("指令类型错误")

第二题:

​ 去重下列列表并保留数据值原来的顺序
​ l1 = [2,3,2,1,2,3,2,3,4,3,4,3,2,3,5,6,5]

第一种:
list = []
l1 = [2,3,2,1,2,3,2,3,4,3,4,3,2,3,5,6,5]
for i in l1:
    if list.count(i) == 0:
        list.append(i)
else:
    print(list)


第二种:
list_fin = []
l1 = [2,3,2,1,2,3,2,3,4,3,4,3,2,3,5,6,5]
list = list(set(l1))
flag = True
while flag == True:
    min = len(l1)
    if len(list) == 0:
        break
    for i in list:
        if l1.index(i) < min:
            min = l1.index(i)
    else:
        t = l1[min]
        list_fin.append(t)
        print(list_fin)
        list.remove(t)
        print(list)
print(list_fin)



第三题:
有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合

pythons={'jason','oscar','kevin','ricky','gangdan','biubiu'}
linuxs={'kermit','tony','gangdan'}
print(pythons & linuxs)
print(pythons | linuxs)
print(pythons - linuxs)
print(pythons ^ linuxs)
posted @ 2022-06-27 21:09  维生素Z  阅读(20)  评论(0)    收藏  举报