首页 > 其他 > 详细

周末作业—员工信息表、计算器、简单爬虫

时间:2018-09-03 13:10:31      阅读:224      评论:0      收藏:0      [点我收藏+]

员工信息表:

技术分享图片
#!/usr/bin/env python
#-*-coding=utf-8 -*-
#GKX
column_dic = {id:0,name:1,age:2,iphone:3,job:4}

def get_show_lst(col_condition):#‘select name,age‘
    ‘‘‘
    获取要展示的列名
    :param col_contion: 用户输入的select条件
    :return: 列名组成的字典
    ‘‘‘
    col_info_lst = col_condition.strip().split(select)
    col_info_lst = [col_info_item for col_info_item in col_info_lst if col_info_item .strip()]
    if col_info_lst:
        col_info = col_info_lst[0].strip()
        if * == col_info:
            return column_dic.keys()
        elif col_info:
            ret = col_info.split(,)
            return [item.strip() for item in ret]
        # else:
        #     print(col_info)

def filter_handler(operate,con): # ‘>‘,‘age > 22‘
    ‘‘‘
    进行筛选工作
    :param operate:用户要进行的操作是 <  >  =  like
    :param con:用户输入的where条件
    :return:被选中的所有行组成的列表,其中每一行都是一个列表
    ‘‘‘
    selected_lst = []
    col,val = con.split(operate)
    col = col.strip()
    val = val.strip()
    judge = int(line_lst[column_dic[col]]) %s int(val)%operate if operate==< or operate ==>         else line_lst[column_dic[col]] %s val%operate
    f = open(info_txt,encoding=utf-8)
    for line in f:
        line_lst = line.strip().split(,)
        if eval(judge):
            selected_lst.append(line_lst)
    f.close()
    return selected_lst

def get_selected_line(con): # ‘age > 22‘
    ‘‘‘
    获取所有要查找的行,并将每一行作为一个列表项存储在selected_lst中
    :param con:
    :return:
    ‘‘‘
    if > in con:
        selected_lst = filter_handler(>,con)
    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

def show(selected_lst,show_lst):
    for selected_item in selected_lst:
        for col in show_lst:
            print(selected_item[column_dic[col]],end= )
        print()


while True:
    condition = input(>>>) #接收用户指令
    #解析用户指令
    if where in condition:
        ret = condition.split(where) #[‘select name,age‘,‘age > 22‘]
        con = ret[1].strip()  #‘age > 22‘
        # 根据select条件解析用户需要展示的内容
        show_lst = get_show_lst(ret[0])  # ‘select name,age‘

        # 根据where条件解析筛选用户想查找的内容
        selected_lst = get_selected_line(con)

        # 将符合条件的内容按照用户的需求展示出来
        show(selected_lst, show_lst)
    choice = input(continue?)
    if choice == q:
        break

    else:
        print(selection without where)
员工信息表

 

计算器

技术分享图片
#!/usr/bin/env python
#-*-coding=utf-8 -*-
#GKX
import re

def dealwith(express):
    ‘‘‘
    将表达式中 ‘+-’替换为 -   --替换为+
    :param new_express: 计算完原子型表达式后的主表达式
    :return:
    ‘‘‘
    express:express = express.replace(+-,-)
    express:express = express.replace(--,+)
    return express

def cal_exp_son(exp_son):
    ‘‘‘
    计算原子型表达式 两个数之间的乘除法
    :param exp_son: 传进来的,只有两个数之间的乘除法
    :return: 返回计算后的值
    ‘‘‘
    if / in exp_son:
        a,b = exp_son.split(/)  # -40/5
        return str(float(a)/float(b))
    elif * in exp_son:
        a,b = exp_son.split(*)
        return str(float(a)* float(b))


def cal_express_no_bracket(exp):
    ‘‘‘
    计算里层不带括号的表达式
    :param exp: 最里层不带括号的表达式传进来
    :return:
    ‘‘‘
    exp = exp.strip(())
    #先乘除后加减
    #-40/5*8+2         9-2*5/3+7/3*99/4*2998+10*568/14
    while True:
        ret = re.search(\d+\.?\d*[*/]-?\d+\.?\d*,exp)
        if ret:
            exp_son = ret.group() #子表达式  最简单的乘除法
            ret = cal_exp_son(exp_son)
            exp = exp.replace(exp_son,ret)   #ret为计算后的值,替换为 乘除的式子
            #111print(exp)
            exp = dealwith(exp)
            #111print(exp)
        else:  #当表达式里没有了乘除法
            ret = re.findall(-?\d+\.?\d*,exp)
            sum = 0
            for i in ret:
                sum += float(i)
            return str(sum)


#提取括号里面没有其他括号的表达式
def remove_bracket(new_express):
    while True:
        ret = re.search(\([^()]+\),new_express)
        if ret:
            express_no_bracket = ret.group()
            #111print(‘匹配到内部不再有括号的值‘,express_no_bracket)   #表达式没括号
            ret = cal_express_no_bracket(express_no_bracket)
            #print(new_express,express_no_bracket,ret)
            new_express = new_express.replace(express_no_bracket,ret)
            #print(new_express)
            #new_express = dealwith(new_express)
            #111print(new_express)
        else:
            #111print(‘表达式中没有括号了‘,new_express)
            ret = cal_express_no_bracket(new_express)
            #111print(ret)
            return ret

#去空格
def calculator(express):
    #express = input(‘表达式‘)
    if express.count(() != express.count()):
        print(表达式括号有误,请检查并重新输入)
    else:
        new_express = re.sub([\s],‘‘,express) #express.replace(‘ ‘,‘‘)
        #11print(new_express)
        res = remove_bracket(new_express)
        print(res)

express = 1 - 2 * ( ( (6 0) -3 0  +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )
calculator(express)
计算器

 

简单爬虫

技术分享图片
import requests

import re
import json

def getPage(url):

    response=requests.get(url)
    return response.text

def parsePage(s):
    
    com=re.compile(<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>
                   .*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>,re.S)

    ret=com.finditer(s)
    for i in ret:
        yield {
            "id":i.group("id"),
            "title":i.group("title"),
            "rating_num":i.group("rating_num"),
            "comment_num":i.group("comment_num"),
        }

def main(num):

    url=https://movie.douban.com/top250?start=%s&filter=%num
    response_html=getPage(url)
    ret=parsePage(response_html)
    print(ret)
    f=open("move_info7","a",encoding="utf8")

    for obj in ret:
        print(obj)
        data=json.dumps(obj,ensure_ascii=False)
        f.write(data+"\n")

if __name__ == __main__:
    count=0
    for i in range(10):
        main(count)
        count+=25
View Code

 

周末作业—员工信息表、计算器、简单爬虫

原文:https://www.cnblogs.com/gkx0731/p/9577829.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!