数据内置方法
1. 基于字符串充当数据库完成用户登录(基础练习)
data_source = 'jason|123' # 一个用户数据
获取用户用户名和密码,将上述数据拆分校验用户信息是否正确
data_source = 'jason|123' username = input('username>>>:').strip() password = input('password>>>:') name, pwd = data_source.split('|') if username == name and password == pwd: print('输入正确') else: print('用户名和密码输入错误')
2. 基于列表充当数据库完成用户登录(拔高练习) # 多个用户数据
data_source = ['jason|123', 'kevin|321','oscar|222']
方法一:
username = input('username>>>:').strip() password = input('password>>>:').strip() data_source = ['jason|123', 'kevin|321','oscar|222'] for data in data_source: real_name, real_pwd = data.split('|') if username == real_name and password == real_pwd: print('登录成功') break else: print('用户名或密码错误') break
方法二:
data_source = ['jason|123', 'kevin|321','oscar|222'] username = input('username>>>:').strip() password = input('password>>>:').strip() user_data = f'{username}|{password}' if user_data in data_source: print('登录成功') else: print('用户名或密码错误')
3. 利用列表编写一个员工姓名管理系统
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
'''分析 用户输入的不同 可以执行不同的代码'''
ps: 思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
# 1.先定义一个专门的存储用户名的列表 data_list = ['Alex', 'Jason','Oscar', 'Jack', 'Bob'] # 2.添加循环结构 while True: # 3.先打印项目功能,供用户选择 print(""" 1.添加用户 2.查看用户 3.删除用户 """) # 4.获取用户想要执行的功能编号 choose_num = input('请输入您想要执行的功能编号>>>:').strip() # 5.根据不同的功能编号执行不同的分支代码 if choose_num == '1': # 6.获取用户输入的用户名 username = input('请输入您的用户名>>>:').strip() # 7.判断当前用户名是否已存在 if username in data_list: print('用户名已存在') else: # 8.列表添加用户名 data_list.append(username) print(f'用户名{username}添加成功') elif choose_num == '2': # 9.循环打印每一个用户数据 for name in data_list: print(f""" -----------------user info---------------- 用户名:{name} """) elif choose_num == '3': # 10.获取用户想要删除的用户名 delete_username = input('请输入您想要删除的用户名>>>:').strip() # 11.先判断用户名是否存在 if delete_username in data_list: print(f'用户名{delete_username}删除成功') data_list.remove(delete_username) else: print('用户名不存在')
* 拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名
员工的信息有:用户名 年龄 岗位 薪资...
员工管理系统:注册、查看(单个员工、所有员工)、修改薪资、删除员工
d1 = {} while True: print(""" 1.新增用户信息 2.查看单个员工信息 3.查看所有员工信息 4.修改薪资 5.删除员工 """) choose_num = input("请输入您要操作的选项>>>:").strip() if choose_num == '1': while True: # 获取员工编号 num = input('请输入员工编号>>>:') if num == 'q': break if not num.isdigit(): print('员工编号必须是纯数字') continue # 判断员工编号是否存在 if num in d1: print('员工编号已存在,请重新录入') continue # 获取员工详细信息 username = input('请输入员工姓名>>>').strip() age = input('请输入员工年龄>>>:').strip() job = input('请输入员工岗位>>>:').strip() salary = input('请输入员工薪资>>>:').strip() d2 = {} # 添加员工信息键值对 d2['name'] = username d2['age'] = age d2['salary'] = salary d2['job'] = job # 添加到大字典中 d1[num] = d2 print(f'员工{username}添加成功') elif choose_num == '2': while True: # 获取员工编号 target_num = input('请输入您查看的员工编号>>>:') if target_num == 'q': break if target_num not in d1: print('您要查看的员工编号不存在') continue # 根据员工编号获取员工字典数据 d2 = d1.get(target_num) print(d1) # 格式化输出 print(f""" ------------------user info---------------- name:{d2.get("name")} age: {d2.get("age")} job: {d2.get("job")} salary: {d2.get("salary")} ------------------------------------------- """) elif choose_num == '3': for d2 in d1.values(): print(f""" ------------------user info---------------- name:{d2.get("name")} age: {d2.get("age")} job: {d2.get("job")} salary: {d2.get("salary")} ------------------------------------------- """) elif choose_num == '4': while True: target_num = input('请输入您要修改的数据编号>>>:').strip() if target_num == 'q': break if target_num not in d1: print('员工编号不存在') continue new_salary = input('请输入该员工的薪资待遇>>>:').strip() if not new_salary.isdigit(): print('薪资只能是纯数字') continue d2 = d1.get(target_num) d2['salary'] = new_salary d1[target_num] = d2 print(d1.get(target_num)) elif choose_num == '5': while True: target_num = input('请输入您要删除的用户编号>>>:').strip() if target_num == 'q': break if target_num not in d1: print('此用户编号不存在') continue d1.pop(target_num) else: print('无此操作选项')
4. 去重下列列表并保留数据值原来的顺序
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]
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)
5. 有如下两个集合,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(set(pythons)&set(linuxs)) print(set(pythons)|set(linuxs)) print(set(pythons) - set(linuxs)) print(set(pythons) ^ set(linuxs))
6. 统计列表中每个数据值出现的次数并组织成字典展示
eg: l1 = ['jason','jason','kevin','oscar']
结果:{'jason':2,'kevin':1,'oscar':1}
真实数据
l1 = ['jason','jason','kevin','oscar','kevin','tony','kevin']
l1 = ['jason','jason','kevin','oscar','kevin','tony','kevin'] # 1.先定义空字典 d = {} # 2.循环列表中每一个数据值 for i in l1: # 3. 判断i是否在空字典里 if i not in d: d[i] = 1 # 4.如果不在,则新增键值对,value为1 else: d[i] += 1 # 5.如果在,则键值对的值增加1 print(d)