Python 如果选择==item.get('item'): 所选=项目 price=已选择。获取('price') 而cim
另外,我认为这是一个引入面向对象编程的好例子。它允许您拥有更好的结构化代码,并让您专注于希望开发的逻辑。下面是一个可能的实现:Python 如果选择==item.get('item'): 所选=项目 price=已选择。获取('price') 而cim,python,while-loop,infinite-loop,Python,While Loop,Infinite Loop,另外,我认为这是一个引入面向对象编程的好例子。它允许您拥有更好的结构化代码,并让您专注于希望开发的逻辑。下面是一个可能的实现: class Item: def __init__(self, name, price, stock): self.name = name self.price = price self.stock = stock def updateStock(self, stock): self.sto
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('\nitems available \n***************')
for item in self.items:
if item.stock == 0:
self.items.remove(item)
for item in self.items:
print(item.name, item.price)
print('***************\n')
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 got ' +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 checkRefund(self):
if self.amount > 0:
print(self.amount + " refunded.")
self.amount = 0
print('Thank you, have a nice day!\n')
def vend():
machine = VendingMachine()
item1 = Item('choc', 1.5, 2)
item2 = Item('pop', 1.75, 1)
item3 = Item('chips', 2.0, 3)
item4 = Item('gum', 0.50, 1)
item5 = Item('mints',0.75, 3)
machine.addItem(item1)
machine.addItem(item2)
machine.addItem(item3)
machine.addItem(item4)
machine.addItem(item5)
print('Welcome to the vending machine!\n***************')
continueToBuy = True
while continueToBuy == 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':
continueToBuy = False
machine.checkRefund()
else:
continue
else:
print('Item not available. Select another item.')
continue
vend()
类项目:
定义初始(自身、名称、价格、股票):
self.name=名称
self.price=价格
self.stock=股票
def updateStock(自身、库存):
self.stock=股票
def buyFromStock(自我):
如果self.stock==0:
#不引发项目异常
通过
self.stock-=1
自动售货机类别:
定义初始化(自):
self.amount=0
self.items=[]
def附加项(自身,项目):
self.items.append(项目)
def显示项目(自身):
打印(“\n项可用\n****************”)
对于self.items中的项目:
如果item.stock==0:
self.items.remove(项目)
对于self.items中的项目:
打印(项目名称、项目价格)
打印('******************\n')
def addCash(自我、金钱):
self.amount=self.amount+money
def buyItem(自我,项目):
如果自身金额<项目价格:
打印('您不能删除此项目。请插入更多硬币')
其他:
self.amount-=项目价格
项目.buyFromStock()
打印('您得到'+项目名称)
打印('剩余现金:'+str(自身金额))
def containsItem(自身,需要):
ret=假
对于self.items中的项目:
如果item.name==需要:
ret=真
打破
回程网
def getItem(自身,需要):
ret=无
对于self.items中的项目:
如果item.name==需要:
ret=项目
打破
回程网
def insertAmountForItem(自身,项目):
价格=项目价格
而self.amount0:
打印(自我金额+退款)
self.amount=0
打印('谢谢,祝您愉快!\n')
def vend():
机器=自动售货机()
项目1=项目('choc',1.5,2)
项目2=项目('pop',1.75,1)
项目3=项目(“芯片”,2.0,3)
项目4=项目('gum',0.50,1)
项目5=项目('mints',0.75,3)
机器附件(第1项)
机器附件(第2项)
机器附件(第3项)
机器附件(第4项)
机器附件(第5项)
打印(“欢迎使用自动售货机!\n****************”)
继续购买=正确
当continueToBuy==True时:
machine.showItems()
选择=输入('选择项:')
如果选择了machine.containsItem:
item=machine.getItem(已选择)
机器。insertAmountForItem(项目)
机器购买项目(项目)
a=输入('购买其他东西?(y/n):')
如果a=='n':
继续购买=错误
machine.checkreturn()
其他:
持续
其他:
打印('项目不可用。请选择其他项目')
持续
文德()
有关OOP的更多信息,请参见。您只需添加一个布尔变量,如果用户的答案是
n
,则将该变量设置为false。还请注意,代码中有一个问题,您没有以正确的方式更新cim
的值。你必须考虑一个人需要输入一个以上的硬币,所以你必须累积总硬币插入:
def vend():
a = {'item': 'choc', 'price': 1.5, 'stock': 2}
b = {'item': 'pop', 'price': 1.75, 'stock': 1}
c = {'item': 'chips', 'price': 2.0, 'stock': 3}
d = {'item': 'gum', 'price': 0.50, 'stock': 1}
e = {'item': 'mints', 'price': 0.75, 'stock': 3}
items = [a, b, c, d, e]
cim = 0 # cash in machine
print('welcome to vending machine! \n***************')
# show items, prices
def show(items):
print('\nitems available \n***************')
for item in items:
if item.get('stock') == 0:
items.remove(item)
for item in items:
print(item.get('item'), item.get('price'))
print('***************\n')
continueToBuy = True
# have user choose item
while continueToBuy == True:
show(items)
selected = input('select item: ')
for item in items:
if selected == item.get('item'):
selected = item
price = selected.get('price')
while cim < price:
cim = cim + float(input('insert ' + str(price - cim) + ': '))
print('you got ' + selected.get('item'))
selected['stock'] -= 1
cim -= price
print('cash remaining: ' + str(cim))
a = input('buy something else? (y/n): ')
if a == 'n':
continueToBuy = False
if cim != 0:
print(str(cim) + ' refunded')
cim = 0
print('thank you, have a nice day!\n')
break
else:
print('thank you, have a nice day!\n')
break
else:
continue
vend()
def vend():
a={'item':'choc','price':1.5,'stock':2}
b={'item':'pop','price':1.75,'stock':1}
c={'item':'chips','price':2.0,'stock':3}
d={'item':'gum','price':0.50,'stock':1}
e={'item':'mints','price':0.75,'stock':3}
项目=[a、b、c、d、e]
cim=0#收银机
打印(“欢迎使用自动售货机!\n**************”)
#展示物品、价格
def显示(项目):
打印(“\n项可用\n****************”)
对于项目中的项目:
如果item.get('stock')==0:
项目。删除(项目)
对于项目中的项目:
打印(item.get('item')、item.get('price'))
打印('******************\n')
继续购买=正确
#让用户选择项目
当continueToBuy==True时:
显示(项目)
选择=输入('选择项:')
对于项目中的项目:
如果选择==item.get('item'):
所选=项目
price=已选择。获取('price')
而cim<价格:
cim=cim+float(输入('insert'+str(price-cim)+':'))
打印('you got'+selected.get('item'))
所选['stock']-=1
cim-=价格
打印('剩余现金:'+str(cim))
a=输入('购买其他东西?(y/n):')
如果a=='n':
def vend():
a = {'item': 'choc', 'price': 1.5, 'stock': 2}
b = {'item': 'pop', 'price': 1.75, 'stock': 1}
c = {'item': 'chips', 'price': 2.0, 'stock': 3}
d = {'item': 'gum', 'price': 0.50, 'stock': 1}
e = {'item': 'mints', 'price': 0.75, 'stock': 3}
items = [a, b, c, d, e]
cim = 0 # cash in machine
print('welcome to vending machine! \n***************')
# show items, prices
def show(items):
print('\nitems available \n***************')
for item in items:
if item.get('stock') == 0:
items.remove(item)
for item in items:
print(item.get('item'), item.get('price'))
print('***************\n')
continueToBuy = True
# have user choose item
while continueToBuy == True:
show(items)
selected = input('select item: ')
for item in items:
if selected == item.get('item'):
selected = item
price = selected.get('price')
while cim < price:
cim = cim + float(input('insert ' + str(price - cim) + ': '))
print('you got ' + selected.get('item'))
selected['stock'] -= 1
cim -= price
print('cash remaining: ' + str(cim))
a = input('buy something else? (y/n): ')
if a == 'n':
continueToBuy = False
if cim != 0:
print(str(cim) + ' refunded')
cim = 0
print('thank you, have a nice day!\n')
break
else:
print('thank you, have a nice day!\n')
break
else:
continue
vend()
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('\nitems available \n***************')
for item in self.items:
if item.stock == 0:
self.items.remove(item)
for item in self.items:
print(item.name, item.price)
print('***************\n')
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 got ' +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 checkRefund(self):
if self.amount > 0:
print(self.amount + " refunded.")
self.amount = 0
print('Thank you, have a nice day!\n')
def vend():
machine = VendingMachine()
item1 = Item('choc', 1.5, 2)
item2 = Item('pop', 1.75, 1)
item3 = Item('chips', 2.0, 3)
item4 = Item('gum', 0.50, 1)
item5 = Item('mints',0.75, 3)
machine.addItem(item1)
machine.addItem(item2)
machine.addItem(item3)
machine.addItem(item4)
machine.addItem(item5)
print('Welcome to the vending machine!\n***************')
continueToBuy = True
while continueToBuy == 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':
continueToBuy = False
machine.checkRefund()
else:
continue
else:
print('Item not available. Select another item.')
continue
vend()