day03_final
分为两部分:
一:练习题:
二:员工信息表作业:
练习题如下:
# Author: ray.zhang
#1、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成批量修改操作
import os def info(file,content,modify): with open(file,'r',encoding='utf-8') as read_f ,\ open('_tmp.txt','w',encoding='utf-8') as write_f: res=read_f.read() re=res.replace(content,modify) write_f.write(re) os.remove(file) os.rename('_tmp.txt',file) info('info.txt','hello','year')
#2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
def acle(info): dict = { #方便做统计 'number' : 0, 'string' : 0, 'blank' : 0, 'other' : 0 } for i in info: if i.isdigit(): #引用了字符串方法做判断: dict['number'] += 1 #累计 += 1 elif i.isalpha(): dict['string'] += 1 elif i.isspace(): #判断空格方法: dict['blank'] += 1 else: dict['other'] +=1 return dict #函数返回值 aa = acle('hello,my name is: \'ray\',my ageis0027') #实参引入字符串传值给形参。 print(aa)
#3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def inf(value): # pass if len(value) > 5: return else: return 1 result = inf((1,2,3,4,5,6)) result1 = inf({'a':1,'b':2}) result2 = inf('sasdasdasdas') print(result) print(result1) print(result2)
#4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def length(msg): # pass if len(msg) > 2: msg = msg[:2] #列表的切片 return msg print(length(['a','b','c',1,2,3,4]))
#5、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def sr(sg): # pass aa = len(sg) return sg[0:aa:2] print(sr(['a','b','c',1,2,3,4])) print(sr((0,1,2,3,4,5,6,7,8,)))
#6、写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
#dic = {"k1": "v1v1", "k2": [11,22,33,44]}
#PS:字典中的value只能是字符串或列表
dic = {"k1": "v1v1", "k2": [11,22,33,44]} def check(value): # pass for k,v in value.items(): # print(k,v) #遍历key,value if len(v) > 2: value[k]=v[:2] print(value) check(dic)
二:员工信息表作业如下:
需求 :
1,ray zhang,22,13651054608,IT,2013-04-01
2,jack,23,13333333333,HR,2017-06-10
3,bike Li,10,13651054608,Sale,2014-05-20
4,erav,47,13444444444,IT,2012-01-12
5,egon,33,13567890123,HR,2016-11-22
当然此表你在文件存储时可以这样表示
现需要对这个员工信息文件,实现增删改查操作
可进行模糊查询,语法至少支持下面3种:
select name,age from staff_table where age > 22
select * from staff_table where dept = "IT"
select * from staff_table where enroll_date like "2013"
查到的信息,打印后,最后面还要显示查到的条数
可创建新员工纪录,以phone做唯一键,staff_id需自增
可删除指定员工信息纪录,输入员工id,即可删除
可修改员工信息,语法如下:
UPDATE staff_table SET dept="Market" WHERE where dept = "IT"
'''
流程图:
def mysql_input(inf): #print(inf) info_action=inf.split(' ')[0] # print(info_action) act_moth = { 'select':mysql_select, 'insert':mysql_insert, 'delete':mysql_delete, 'update':mysql_update } if info_action in act_moth: action = act_moth[info_action](inf.split(' ')) #print(act_moth) else: print("input act_moth error!!plz input try!!!") pass def mysql_select(action): print(action) d = {} with open('info', 'r', encoding='utf-8') as f: for line in f: print(line.strip().split(',')[0]) #if ''' select name,age from staff_table where age > 22 select * from staff_table where dept = "IT" select * from staff_table where enroll_date like "2013" ''' pass def mysql_insert(action): print(action) pass def mysql_delete(action): print(action) pass def mysql_update(action): print(action) pass def mysql_action(moth): pass while True: info = input("Plz input sql >>:").strip() if info.__len__() == 0: continue elif info == 'exit' or info == 'quit': break else: sql_input = mysql_input(info) mysql_action(info)
每天问问搬砖的自己,跟咸鱼有什么两样。