day21 05 员工信息表
day21 05 员工信息表
假设有一个员工信息表,里面有每个员工的名字,id,年龄,电话,还有他们所作的工作,而有时候我们并不需要所有的信息,而想根据某些条件,寻找符合条件即可,即筛选,
比如想要筛选出年龄大于22岁的所有人的信息,此时我们可以根据以下代码来实现:
column_dic={'id':,'name':,'age':,'phone':,'job':} #文件中每一列的名称和数字的对应关系 def filter_handler(operate,con):#.将>与age>22分别传入
'''
进行筛选工作
:operate:用户要进行的操作是>/</=/like
:con:用户输入的where条件
return:被选中的所有行组成的列表,其中每一行都是一个列素
'''
selected_lst=[] #. 被选中的列表,空的
col,val=con.split(operate) #.根据>分割age>,得到[age,]
col=col.strip() #. col=age
val=val.strip() #. avl=
judge='int(line_lst[column_dic[col])%s int(val)'%operate if operate=='<' or operate=='>' else 'line_list[column_dic[col]]'
#.上面是拼字符串,很长,三元表达式 可从if看起
# #column_dic[col]=column_dic[age]=,int(line_lst[])强转数据类型,里面的%s即operate也就是传入的>号
#也就是判断int(line_lst[])是否>,作为下面judge的判断条件
f=open('user',encoding ='utf-8')
for line in f :
line_lst=line.strip().split(',') # . 这里的line_lst=[id,name,age,phone,job]即为#20里面的line_lst
if eval(judge): #. 通过上面#20判断真假,如果为真执行下面的代码
selected_lst.append(line_lst) #23. 把选择的所有符合条件的的行都都加到selected_lst[]中,并返回给调用的地方#14那里
f.close()
return selected_lst def get_selected_line(con): #. 用户条件con=’age>‘被传入
'''
获取所有要查找的行,并将每一行作为一个列表项存储在selected_lst中
:return:存储了符合条件的列表
'''
if'>'in con: # 判断传入的con=age>22存在'>'
selected_lst=filter_handler('>',con) #. 调用前面的函数filter_handler() #.接收23返回的值即selected_lst=line_lst
elif'<'in con:
selected_lst=filter_handler('<',con)
elif '='in con:
selected_lst=filter_handler('==',con.replace('=','=='))
elif 'like' in con:
selected_lst=filter_handler('in',con)
return selected_lst #. 返回selected_lst=line_lst给调用的地方#12那里 def get_show_lst(col_codition): #.’select name,age‘被传进来了
'''
获取要展示的列名
:param col_condition:用户输入的select条件
:return:列名组成的字典
'''
col_info_lst=col_codition.strip().split('select')
#6.将select name,age按照select分割得到‘name,age’,再去掉空得到[’name,age‘]
col_info_lst=[col_info_item for col_info_item in col_info_lst if col_info_item.strip()]
if col_info_lst: #7. 此时col_info_lst=[’name,age‘]
col_info=col_info_lst[].strip() #8. 此时col_info=['name,age‘]
if '*'==col_info:
return column_dic.keys() #符合条件的就返回['name','age','id','job','phone']
elif col_info:
ret=col_info.split(',') #.ret=['name','age']
return [item.strip() for item in ret] #10. return ['name','age']给调用的地方即#4那里
else:print(col_info) def show(selected_lst,show_lst): #. 将#26生成的selected_lst=line_lst和#11生成的show_lst=[['name','age']]传入
'''
展示符合条件的的内容
:param selected_lst:符合条件的行的列表
:param show_lst:所有要展示的字段
:return:None
'''
for selected_item in selected_lst: #.循环所有符合条件的行的列表
for col in show_lst:#. 循环根据用户条件想要显示的东西
print(selected_item[colunm_dic[col]],end=' ')#. 打印根据用户条件而得到的最终结果
print() #从这里开始看: condition=input('>>>') #. 接收用户的指令
#解析用户的指令
ret=condition.split('where')#. 按照where切割,切割后得到一个列表[假设拿到的是 'select name,age','一个条件:age>22']
con=ret[].strip() #. 去空格拿到的是’age>‘
#根据select条件解析用户需要展示的内容
show_lst=get_show_lst(ret[])
#. 将参数’select name,age‘传进去上面的get_show_lst中 #. 接收# 返回来的值show_lst=[['name','age']]
#根据where条件解析用筛选用户想要查找的内容
selected_lst=get_selected_line(con)#selected_lst中存储了所有符合条件的内容
#. 将#3生成的用户条件con=’age>‘传入并调用函数前面的get_selected_line()
#.接收#25返回的值selected_lst=line_lst
#将符合条件的内容按照用户的需求展示出来
show(selected_lst,show_lst) #. 将#26生成的selected_lst=line_lst和#11生成的show_lst=[['name','age']]传入show函数
上面的代码,具体分析了每个函数所实现的功能,每一个参数代表的意义,如果要用户输入条件的时候,这样:
>>>select name,age where age>
额。。由于没有那个员工信息表,运行的最终结果不能够显示,不过大致的代码框架基本如上面的代码,里面的参数和一些定义,可以根据实际情况改变,
四个函数以及对应的功能:
(1)def get_show_lst(col_codition):
获取要展示的列名
:param col_condition:用户输入的select条件
:return:列名组成的字典 (2)def get_selected_line(con):
获取所有要查找的行,并将每一行作为一个列表项存储在selected_lst中
:return:存储了符合条件的列表 (3)def filter_handler(operate,con):
进行筛选工作
:operate:用户要进行的操作是>/</=/like
:con:用户输入的where条件
return:被选中的所有行组成的列表,其中每一行都是一个列素 (4)def show(selected_lst,show_lst):
展示符合条件的的内容
:param selected_lst:符合条件的行的列表
:param show_lst:所有要展示的字段
:return:None
day21 05 员工信息表的更多相关文章
- 无废话ExtJs 入门教程十五[员工信息表Demo:AddUser]
无废话ExtJs 入门教程十五[员工信息表Demo:AddUser] extjs技术交流,欢迎加群(201926085) 前面我们共介绍过10种表单组件,这些组件是我们在开发过程中最经常用到的,所以一 ...
- python-查询员工信息表
python查询员工信息表 基本要求: 用户可以模糊查询员工信息 显示匹配了多少条,匹配字符需要高亮显示 代码: #!/usr/env python #coding:utf-8 import time ...
- python-打印简单公司员工信息表
python-打印简单公司员工信息表 要求,输入name不为空,输入次数最多3次,3次后跳出程序: 知识点: raw_input str转int whil if elif else continue ...
- python3 员工信息表
这是最后一条NLP了......来吧 十二,动机和情绪总不会错,只是行为没有效果而已 动机在潜意识里,总是正面的.潜意识从来不会伤害自己,只会误会的以为某行为可以满足该动机,而又不知道有其他做法的可能 ...
- day12 python作业:员工信息表
作业要求: 周末大作业:实现员工信息表文件存储格式如下:id,name,age,phone,job1,Alex,22,13651054608,IT2,Egon,23,13304320533,Tearc ...
- s9.16作业,员工信息表
转载https://blog.csdn.net/qq_35883464/article/details/83151464 实现员工信息表文件存储格式如下:id,name,age,phone,job1, ...
- python练习题-员工信息表
周末大作业:实现员工信息表文件存储格式如下:id,name,age,phone,job1,Alex,22,13651054608,IT2,Egon,23,13304320533,Tearcher3,n ...
- python基础之员工信息表作业
周末大礼包 文件存储格式如下: id, name, age, phone, job 1, Alex, 22, 13651054608, IT 2, Egon, 23, 13304320533, Tea ...
- python作业员工信息表程序(第四周)
作业需求: 1. 员工信息表程序,实现增删改查操作: 2. 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 ...
随机推荐
- centos6.5 系统-搭建lamp(php7)环境--(yum在线安装)
1.查看当前服务器的版本 #方法1 cat /etc/redhat-release #方法2 rpm -q centos-release 2.安装apache #一键安装apache yum inst ...
- Reshapeing operations
Reshapeing operations Suppose we have the following tensor: t = torch.tensor([ [1,1,1,1], [2,2,2,2], ...
- java web课程设计截图和服务器地址
企业办公测试截图和服务器地址 本篇博客主要围绕以下几个部分展开,登录.系统管理.工作流.个人事务管理.内部邮件.公共信息共六个部分.主要有界面截图和简要介绍. 一.登录.更改密码界面 登录界面包括以管 ...
- [COCI2010]HRPA
Description N个石子,A和B轮流取,A先.每个人每次最少取一个,最多不超过上一个人的个数的2倍. 取到最后一个石子的人胜出,如果A要有必胜策略,第一次他至少要取多少个. Input 第一行 ...
- QQ文件没有读取权限,60017导致QQ无法登陆的终极解决办法
每隔一段时间,我的QQ就无法登陆,提示:QQ文件没有读取权限,60017导致QQ无法登陆的终极解决办法 点击了解详情发现里面的解决办法根本不起作用,网上 说的各种解决办法都不起作用,解决办法如下 1. ...
- HTTP协议 之 缓存
转自: http://www.cnblogs.com/TankXiao/archive/2012/11/28/2793365.html HTTP协议提供了非常强大的缓存机制, 了解这些缓存机制,对提 ...
- 174 Dungeon Game 地下城游戏
一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格布局.我们英勇的骑士(K)最初被安置在左上角的房间里,并且必须通过地下城对抗来拯救公主.骑士具有以正整数 ...
- Codeforces Beta Round #98 (Div. 2)(A-E)
A #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- String的用法——获取功能
package cn.itcast_04; /* String类获取功能 int length():获取字符的长度 char charAt(int index):获取指定索引位置的字符 int ind ...
- AJPFX:关于面向对象及java的一些机制的思考
1.变量的作用域和生命周期什么关系? 2.java除了在类体和方法体(包括参数)中可以声明变量外,其他位置一定不可以声明变量吗?比如高级别的应用里是不是有例外呢? 3.java源文件中代码的组织方式一 ...