Я пытаюсь создать торговый автомат в python, чтобы продолжить изучение этого предмета вне класса. В настоящее время я пытаюсь напечатать варианты напитков или закусок торгового автомата. До того, как я добавил функцию choose(), она полностью распечатала параметры списка, как только я добавил функцию select(), она печатает только первый элемент в списке.Список не распечатывается полностью, прежде чем перейти к следующей функции
import time
drinkPairs=[("Apple Juice", 1.50), ("Monster", 3.75), ("Red Bull", 3.75), ("Sprite", 2.00), ("Water", 1.00)]
drinkDict, drinkPrice = zip(*drinkPairs)
snackPairs=[('Pringles', 3.50), ('Doritos', 3.15), ('Chocolate Donuts', 2.50), ('Honey Bun', 3.75), ('Cinnamon Roll', 3.50)]
snackDict, snackPrice = zip(*snackPairs)
def select():
if 'drink' in answer.lower():
drink()
elif 'snack' in answer.lower():
snack()
else:
error()
#give selection of items and costs of items
def drink():
print('Here are the drink options:\n')
for i, p in enumerate(drinkDict):
print('{}: ${:.2f}\n'.format(p,drinkPrice[i]))
#choose()
def snack():
print('Here are the snack items')
for i, p in enumerate(snackDict):
print('{}: ${:.2f}\n'.format(p,snackPrice[i]))
choose()
def error():
print("I'm sorry, I don't understand. Please try again.\n")
time.sleep(2)
select()
def choose():
selection=input('Which item would you like?\n')
if 'apple' in selection.lower():
amountDue= amountDue + 1.50
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
elif 'monster' in selection.lower():
amountDue= amountDue + 3.75
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
elif 'bull' in selection.lower():
amountDue= amountDue + 3.75
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
elif 'sprite' in selection.lower():
amountDue= amountDue + 2.00
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
elif 'water' in selection.lower():
amountDue= amountDue + 1.00
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
elif 'pringles' in selection.lower():
amountDue= amountDue + 3.50
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
elif 'doritos' in select.lower():
amountDue= amountDue + 3.15
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
elif 'chocolate' in select.lower():
amountDue= amountDue + 2.50
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
elif 'honey' in select.lower():
amountDue= amountDue + 3.75
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
elif 'roll' in select.lower():
amountDue= amountDue + 3.50
selectTwo=input('Would you like anything else?\n')
if selectTwo.lower().startswith('n'):
amountDue()
elif any(x in selectTwo.lower() for x in options):
choose()
else:
chooseError()
else:
chooseError()
def chooseError():
print("I'm sorry ,I don't understand. Please try again {}.".format(name))
time.sleep(2)
choose()
#welcome user to vending machine
name=input('Welcome to Vending 2.0. What is your name?\n')
answer= input('Okay {}, would you like a drink or snack?\n'.format(name))
select()
, потому что 'choose' должен блокировать (мы не имеем код) и находится в пределах вашей петли ... –
Я не хочу, чтобы добавить весь код, если нет необходимости. Я добавлю это, чтобы показать остальное. –
Переместите 'select()' из одного уровня отступов, если вы хотите, чтобы все было напечатано, прежде чем отображать приглашение для выбора. Сейчас он находится внутри цикла for, поэтому вы печатаете один элемент, а затем показываете приглашение. Если вы переместите его, вы распечатаете все элементы, а затем отобразите приглашение. –