# HW 05
def __init__(self,product,price,remaining = 0,store_money = 0):
self.product = product
self.price = price
self.remaining = remaining
self.store_money = store_money
def vend(self):
if self.remaining <= 0:
return('Machine is out of stock.')
elif self.price > self.store_money:
return('You must add ${0} more funds.'.format(self.price - self.store_money))
elif self.price < self.store_money:
change = self.store_money-self.price
self.store_money = 0
self.remaining -=1
return('Here is your {0} and ${1} change.'.format(self.product,change))
else:
self.remaining -=1
return('Here is your {0}.'.format(self.product))
def add_funds(self,price):
if self.remaining <= 0:
return('Machine is out of stock. Here is your ${0}.'.format(price))
else:
self.store_money = price+self.store_money
return('Current balance: ${0}'.format(self.store_money))
def restock(self,remaining):
self.remaining +=remaining
return('Current {0} stock: {1}'.format(self.product,self.remaining))
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
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
# Trees
# Q2: Preorder
res = []
def helper(t):
res.append(t.label)
for branch in t.branches:
helper(branch)
helper(t)
return res
1
2
3
4
5
6
7
2
3
4
5
6
7
# Linked Lists
# Q3: Store Digits
if n < 10:
return Link(n)
string_n = str(n)
first = int(string_n[0])
rest = store_digits(int(string_n[1:]))
return Link(first,rest)
1
2
3
4
5
6
7
2
3
4
5
6
7
# Generators/Trees
# Q4: Generate Paths
if t.label == value:
yield [t.label]
for b in t.branches:
generate_branch = generate_paths(b,value)
for next in generate_branch:
yield [t.label] + next
1
2
3
4
5
6
2
3
4
5
6