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 ...
随机推荐
- bzoj 4540: [Hnoi2016]序列【单调栈+线段树】
强烈安利:http://blog.csdn.net/qq_34637390/article/details/51313126 这篇讲标记讲的非常好,这个标记非常神奇-- 首先last表示扫描到last ...
- 原生javascript实现计时器
成品图如意下所示: 实现加到等于5的时候停止 搭建HTML结构 minutes:<input type="text" value="0"> seco ...
- visual studio中使用clrscr程序出错
clrscr()函数的作用是“清屏”,即把标准输出设备中以前的显示记录清除,包含在头文件#include<conio.h>中,但暂时较旧的编译器中没有这个. 如果想要具有相同作用的函数,可 ...
- linux unzip和zip
注:*压缩成限.zip格式文件 常用解压缩: [root@mysql test]# unzip -o test.zip -d tmp/ 将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同 ...
- Qt之界面(自定义标题栏、无边框、可移动、缩放)
效果 自定义标题栏 titleBar.h #ifndef TITLEBAR_H #define TITLEBAR_H #include <QLabel> #include <QPus ...
- _bzoj1192 [HNOI2006]鬼谷子的钱袋【水题】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1192 求2^i > m的最小的i #include <cstdio> in ...
- Codeforces Beta Round #96 (Div. 2) (A-E)
写份DIV2的完整题解 A 判断下HQ9有没有出现过 #include <iostream> #include<cstdio> #include<cstring> ...
- jdk 1.8下 java ArrayList 添加元素解析
转载请注明http://www.cnblogs.com/majianming/p/8006452.html 有人问我,java ArrayList底层是怎么实现的?我就回答数组,他再问我,那它是怎么实 ...
- AJPFX:如何保证对象唯一性呢?
思想: 1,不让其他程序创建该类对象. 2,在本类中创建一个本类对象. 3,对外提供方法,让其他程序获取这个对象. 步骤: 1,因为创建对象都需要构造函数初始化,只要将本类中的构造函数私有化,其他程序 ...
- Swift 中的基础语法(二)
1.Swift 中的函数 /// 函数的定义 /// /// - Parameters: /// - x: 形参 /// - y: 形参 /// - Returns: 返回值 func sum(x: ...