-
Notifications
You must be signed in to change notification settings - Fork 0
/
Store.py
59 lines (56 loc) · 2.59 KB
/
Store.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from Food import Food
from Error import ParamError
class Store:
weight = {'price': -0.2, 'like': 0.2, 'sale': 1, 'fruit': 0.2}
def __init__(self, name, price, like, sale, food, url):
self.error = False
if(isinstance(name, str) == False):
self.error = True
raise ParamError('attribute \'name\' must be \'str\'!')
if(isinstance(price, float) == False) and (isinstance(price, int) == False):
self.error = True
raise ParamError('attribute \'price\' must be \'float\' or \'int\'!')
if(isinstance(like, int) == False):
self.error = True
raise ParamError('attribute \'like\' must be \'int\'!')
if(isinstance(sale, int) == False):
self.error = True
raise ParamError('attribute \'sale\' must be \'int\'!')
if(isinstance(food, Food) == False):
self.error = True
raise ParamError('attribute \'food\' must be \'Food\'!')
if (isinstance(url, str) == False):
self.error = True
raise ParamError('attribute \'url\' must be \'str\'!')
self.attr = {'name': name,'Performance':{}, 'score': 0,'url' : url}
self.attr['Performance'] = {'price':price,'like' : like,'sale' : sale}
self.fruit = food
# Assess the shop
for i in self.attr['Performance'].keys():
if (Store.weight.get(i) == None):
print('Default value:', i)
return;
self.attr['score'] += Store.weight.get(i) * self.attr['Performance'].get(i)
if(self.fruit.attr['worked'] == False):
print('Warning:This Store contains uninitialized data.')
self.attr['score'] += self.fruit.attr['score']
def Print(self):
if(self.error == False):
print('<CLASS Store> ',self.attr)
print(" attr->'Fruit': " +self.fruit.ToString())
return self.error
def Calculate(self):
if(self.error == True):
print('Error instance!')
return
self.attr['score'] = 0
for i in self.attr['Performance'].keys():
if (Store.weight.get(i) == None):
print('Default value:', i)
self.attr['score'] = -9999
return -9999;
self.attr['score'] += Store.weight.get(i) * self.attr['Performance'].get(i)
if(self.fruit.attr['score'] == 0):
print('Warning:This Store contains uninitialized data.')
self.attr['score'] += self.fruit.attr['score']
return self.attr['score']