【发布时间】:2019-03-25 13:19:33
【问题描述】:
程序提供商品,让用户为商品付款,“赠送”商品,并更新每件商品的库存。它似乎或多或少地起作用。我有两个问题:
1) 用户回答“n”为“买别的东西?”后,我不知道如何退出自动售货机程序。 (是/否):'。
2) 有没有办法让代码更简单/更好?
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')
# have user choose item
while 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 = float(input('insert ' + str(price - cim) + ': '))
else:
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':
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()
【问题讨论】:
标签: python while-loop infinite-loop