Problem I: 实现一种电厂小型实时数据库系统
Problem Description
电厂控制系统的设备有很多监测点,监测点的传感器将监测到的实时数据传送到厂级监控中心,使工程师能方便的分析电厂设备的运行状态。厂级监控中心需要将这些数据存入数据库(INSERT),并且能查询(QUERY),修改(MODIFY),删除(DELETE)这些数据。
这些数据只有两种类型:模拟量(AI,浮点数, 3 位小数,例如电流,温度等 ),开关量(DI,值为 0 或 1 的数,例如开关的闭合等)。每种数据有三个属性:监测点的名称(最长20 个字符),监测到的值,数据类型。
现在需要你实现这个小型的数据库系统支持以上四种操作。
现定义以上四种操作的格式为:
OPERATION TYPE NAME VALUE(可选)。
例如删除一条数据的操作为:DELETE DI Temperature
查询为: QUERY DI Temperature
修改: MODIFY DI Temperature 1
存入为: INSERT DI Temperature 0
当以上操作失败时给出提示信息: OPERATION ERROR,例如查询,修改,删除的数据不存在,插入已经存在过的一条数据(名称和类型都重复的数据),都会失败。否则给出成功提示SUCCESSED。
Input Description
第一行为一个整数n,表示接下来有n 行输入,每一行为以上四种操作之一。
Output Description
对每行的操作输出相应的操作结果。
Sample Input
7
INSERT DI Temperature 1
INSERT AI Switch 500.500
QUERY DI Temperature
MODIFY DI Temperature 0
DELETE DI Temperature
QUERY DI Temperature
INSERT AI Switch 63.333
Sample Output
SUCCESSED
SUCCESSED
1
SUCCESSED
SUCCESSED
OPERATION ERROR
OPERATION ERROR
ac代码:
1 def find(p,lines): 2 for i in lines: 3 if p in i : 4 return 1 5 return 0 6 def delete(p,lines): 7 for i in lines: 8 if p in i : 9 lines.remove(i) 10 print('SUCCESSED') 11 return 1 12 return 0 13 def modify(p,lines,y): 14 for i in lines: 15 if p in i : 16 i[3] = y 17 print('SUCCESSED') 18 return 1 19 return 0 20 def query(p,lines): 21 for i in lines: 22 if p in i : 23 print(i[3]) 24 return 1 25 return 0 26 n = int(input()) 27 lines = [] 28 i = 0 29 for i in range(n): 30 x = [] 31 x = input().split() 32 if x[0]=='INSERT': 33 if find(x[1],lines) and find(x[2],lines): 34 print('OPERATION ERROR') 35 continue 36 else: 37 lines.append(x) 38 print('SUCCESSED') 39 elif x[0] == 'QUERY' and find(x[2],lines) and find(x[1],lines) : 40 query(x[2],lines) 41 elif x[0] == 'MODIFY' and find(x[2], lines) and find(x[1],lines): 42 modify(x[2],lines,x[3]) 43 elif x[0] == 'DELETE' and find(x[2], lines) and find(x[1],lines): 44 delete(x[2],lines) 45 else : 46 print('OPERATION ERROR') 47 continue