114k views
1 vote
Develop a program working as a soda vending machine. The program should show the product menu with price and take user input for product number, quantity and pay amount. The output should show the total sale price including tax and the change. Organize the program with 4 functions and call them in main() based on the requirements.

1 Answer

5 votes

Answer:

Step-by-step explanation:

The following vending machine program is written in Python. It creates various functions to checkItems, check cash, check stock, calculate refund etc. It calls all the necessary functions inside the main() function. The output can be seen in the attached picture below.

class Item:

def __init__(self, name, price, stock):

self.name = name

self.price = price

self.stock = stock

def updateStock(self, stock):

self.stock = stock

def buyFromStock(self):

if self.stock == 0:

# raise not item exception

pass

self.stock -= 1

class VendingMachine:

def __init__(self):

self.amount = 0

self.items = []

def addItem(self, item):

self.items.append(item)

def showItems(self):

print('Items in Vending Machine \\----------------')

for item in self.items:

if item.stock == 0:

self.items.remove(item)

for item in self.items:

print(item.name, item.price)

print('----------------\\')

def addCash(self, money):

self.amount = self.amount + money

def buyItem(self, item):

if self.amount < item.price:

print('You can\'t but this item. Insert more coins.')

else:

self.amount -= item.price

item.buyFromStock()

print('You chose ' +item.name)

print('Cash remaining: ' + str(self.amount))

def containsItem(self, wanted):

ret = False

for item in self.items:

if item.name == wanted:

ret = True

break

return ret

def getItem(self, wanted):

ret = None

for item in self.items:

if item.name == wanted:

ret = item

break

return ret

def insertAmountForItem(self, item):

price = item.price

while self.amount < price:

self.amount = self.amount + float(input('insert ' + str(price - self.amount) + ': '))

def calcRefund(self):

if self.amount > 0:

print(self.amount + " refunded.")

self.amount = 0

print('Thank you!\\')

def main():

machine = VendingMachine()

item1 = Item('Kit Kat', 1.5, 2)

item2 = Item('Potato Chips', 1.75, 1)

item3 = Item('Snickers', 2.0, 3)

item4 = Item('Gum', 0.50, 1)

item5 = Item('Doritos',0.75, 3)

machine.addItem(item1)

machine.addItem(item2)

machine.addItem(item3)

machine.addItem(item4)

machine.addItem(item5)

print('Welcome!\\----------------')

continueBuying = True

while continueBuying == True:

machine.showItems()

selected = input('select item: ')

if machine.containsItem(selected):

item = machine.getItem(selected)

machine.insertAmountForItem(item)

machine.buyItem(item)

a = input('buy something else? (y/n): ')

if a == 'n':

continueBuying = False

machine.calcRefund()

else:

continue

else:

print('Item not available. Select another item.')

continue

if __name__ == "__main__":

main()

Develop a program working as a soda vending machine. The program should show the product-example-1
User David Claridge
by
6.2k points