资讯专栏INFORMATION COLUMN

Python综合练习之创建员工信息表

AlienZHOU / 462人阅读

摘要:这是一道综合练习题,要求如下创建员工信息表,格式为字段字段字段字段字段要求可以根据条件语句进行查询,格式为命令之间用空格隔开定义最终存储数据的列表请输入查询语句,格式为定义存放输入语句的列表表示符合查询变量的字符串所在列表位置设定关键字条

这是一道综合练习题,要求如下:
创建员工信息表,格式为:

#字段1,字段2,字段3,字段4,字段5
#1,***  ,***  ,  *******,***
#2,***,  ***, *******,***
#3,*** ,***   ,  *****,  ***

要求可以根据条件语句进行查询,格式为 select where 命令之间用空格隔开

def emp(): 
    lis_res = [[],[],[],[],[]] #定义最终存储数据的列表
    with open("yuangong","r",encoding="utf-8") as f:
        cha = input("请输入查询语句,格式为:select *** where *** > ***").strip()
        lis = cha.split(" ")#定义存放输入语句的列表
        n = [] #n表示符合查询变量的字符串所在列表位置
        if lis[0] == "select" and lis[2] == "where":#设定关键字条件
            lis1 = lis[1].split(",")#定义查询元素的列表
            lis_title = f.readline().split(",") #文件中第一行为字段名
            lis_title = [s.strip() for s in lis_title]#列表推导式,去掉每个元素两边的空格
            for v in lis1:#循环遍历要查询的字段是否在文件中
                if v in lis_title:
                    n.append(lis_title.index(v))
            if "*" in lis[1]:n=[0,1,2,3,4]#定义使用*模糊查询
            if n == []: #如果字段不存在则退出程序
                print("查询的字段不存在")
                return
            if lis[4] == ">":#检查条件语句是否是大于号
                if lis[3] in lis_title: #字段是否包含条件语句
                    m = lis_title.index(lis[3]) #m表示符合条件语句的字符串所在列表位置
                else:
                    print("字段不含有该条件")
                    return
                for v in f:
                    lis_f = v.split(",")#把取出来的每条数据都转化成列表
                    lis_f = [s.strip() for s in lis_f] #列表推导式,去掉每个元素两边的空格
                    if lis_f[m].isdigit() and lis[5].isdigit():#检查条件是否都为数字
                        if int(lis_f[m]) > int(lis[5]):
                            for i in n:#如果条件成立则把结果追加到lis_res中
                                lis_res[i].append(lis_f[i])
                    else:print("无法进行比较")
            elif lis[4] == "<":#检查条件语句是否是大于号
                if lis[3] in lis_title: #字段是否包含条件语句
                    m = lis_title.index(lis[3]) #m表示符合条件语句的字符串所在列表位置
                else:
                    print("字段不含有该条件")
                    return
                for v in f:
                    lis_f = v.split(",")#把取出来的每条数据都转化成列表
                    lis_f = [s.strip() for s in lis_f] #列表推导式,去掉每个元素两边的空格
                    if lis_f[m].isdigit() and lis[5].isdigit():#检查条件是否都为数字
                        if int(lis_f[m]) < int(lis[5]):
                            for i in n:#如果条件成立则把结果追加到lis_res中
                                lis_res[i].append(lis_f[i])
                    else:print("无法进行比较")
            elif lis[4] == "=":#检查条件语句是否是大于号

                if lis[3] in lis_title: #字段是否包含条件语句
                    m = lis_title.index(lis[3]) #m表示符合条件语句的字符串所在列表位置
                else:
                    print("字段不含有该条件")
                    return
                for v in f:
                    lis_f = v.split(",")#把取出来的每条数据都转化成列表
                    lis_f = [s.strip() for s in lis_f] #列表推导式,去掉每个元素两边的空格
                    if lis_f[m] == lis[5]:
                        for i in n:#如果条件成立则把结果追加到lis_res中
                            lis_res[i].append(lis_f[i])
            elif lis[4] == "like":#定义like模糊搜索
                if lis[3]in lis_title:
                    m = lis_title.index(lis[3]) #m表示符合条件语句的字符串所在列表位置
                else:
                    print("字段不含有该条件")
                    return
                for v in f:
                    lis_f = v.split(",")#把取出来的每条数据都转化成列表
                    lis_f = [s.strip() for s in lis_f] #列表推导式,去掉每个元素两边的空格
                    if lis[5] in lis_f[m]:
                        for i in n:
                            lis_res[i].append(lis_f[i])                
            else:print("请以空格将各个名字隔开")       
        else:print("请输入正确的指令")
    if n!= []:#防止乱输指令后报错
        for i in range(len(lis_res[n[0]])):#输出结果
            for k in n:
                print(lis_res[k][i],end="  ")
            print("
",end="")
emp()
请输入查询语句,格式为:select *** where *** > ***select * where phone like 188
1  tom  25  18888888888  it  

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42550.html

相关文章

  • python标准库学习之zipfile模块

    摘要:模块里有两个非常重要的分别是和。返回一个对象,它包括文件的详细信息。将文档内的指定文件解压到当前目录。为文件路径,为添加到文档之后保存的名称参数表示压缩方法,它的值可以是或。预留字段,当前实现总是返回。 ZipFile模块里有两个非常重要的class, 分别是 ZipFile和ZipInfo。ZipFile是主要的类,用来创建和读取zip文件,而ZipInfo是存储的zip文件的每个文...

    Magicer 评论0 收藏0
  • ICCV 2021 口罩人物身份鉴别全球挑战赛冠军方案分享

    摘要:损失函数此次竞赛我们采用的基线损失函数为,该损失函数在训练过程中模拟课程学习的思想,按照样本从易到难的顺序进行训练。 1. 引言10月11-17日,万众期待的国际计算机视觉大会 ICCV 2021 (International Conference on Computer Vision) 在线上如期举行,受到全...

    nidaye 评论0 收藏0
  • python初学:第二步——员工信息增删改查程序

    摘要:对不同的类型进行对应的操作提供帮助主函数,提供用户输入界面。对用户输入的语法正确性镜像解析,并最终解析成字典格式表执行程序链接程序运行命令程序正文执行脚本主入口程序主函数获取用户输入,并对用户进行解析。 程序要求 文件存储时可以这样表示 id,name,age,phone,dept,enroll_date 1,Alex Li,22,13651054608,IT,2013-04-01...

    impig33 评论0 收藏0
  • 算法学习之数据结构线性、堆、栈

    摘要:栈底是固定的,而栈顶浮动的如果栈中元素个数为零则被称为空栈。入栈将数据保存到栈顶。链栈链栈是指栈的链式存储结构,是没有附加头节点的运算受限的单链表,栈顶指针是链表的头指针。 一、喜欢单挑线性表 1.线性表的特性 线性表是一个线性结构,它是一个含有n≥0个节点的有限序列。在节点中,有且仅有一个开始节点没有前驱并有一个后继节点,有且仅有一个终端节点没有后继并有一个前驱节点。其他的节点都有且...

    huaixiaoz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<