2015-04-21 2 views
0
 def main(): 
      selectionvalid = False 
      print("Welcome to virtue vending machine!") 
      print("Machine only takes $1 bills") 
      table() 
      while True: 
       user = input("Select your choice:") 
       if user == 'A1': 
        selectionvalid = True 
        print("Snickers: $.89") 
        change = bills() - a1 
       elif user == 'A2': 
        print("M&Ms: $1.39") 
        change = bills() - a2 
        selectionvalid = True 
       elif user == 'A3': 
        print("M&Ms: $1.39") 
        change = bills() - a2 
        selectionvalid = True 
       elif user == 'B1': 
        print("Lays: $.50") 
        change = bills() - a3 
        selectionvalid = True 
       elif user == 'B2': 
        print("Doritos: $.50") 
        change = bills() - a3 
        selectionvalid = True 
       elif user == 'B3': 
        print("Cheetos: $1.49") 
        change = bills() - a5 
        selectionvalid = True 
       elif user == 'C1': 
        print("TicTac: $1.04") 
        change = bills() - a6 
        selectionvalid = True 
       elif user == 'C2': 
        selectionvalid = True 
        print("Starburst: $.79") 
        change = bills() - a7 
       elif user == 'C3': 
        selectionvalid = True 
        print("Skittles: $2.49") 
        change = bills() - a8 
       else: 
        print("Item not available.") 
        print("Please, select your choice again:") 
       if selectionvalid == True: 
        print("Your change is:$", format(change, '.2f')) 
        message() 
        break 
       return selectionvalid 

     def bills(): 
      totals = 0 
      bills = int(input("Insert your bills:$")) 
      while bills > 4: 
      print("Please, enter less than $4") 
      bills = int(input("Insert your bills:$")) 
      else: 
      print("You've inserted $",bills,"dollars") 
      return bills 


     def message(): 
      print("Your,",,"is dispensed below!") 
      print("Thank you! Come Again!") 

Я пытаюсь получить выбор пользователя для отображения сообщения def() Есть ли другой способ сконденсировать код из if-elif-else в нечто более похожее на цикл? Я слышал о словаре и списках, но это кажется слишком сложным для этого, я думаю. Например: «Ваш„хихиканье“разливают ниже» «You„KitKat“разливают ниже»Как передать переменную ввода в другой def?

Благодаря

+0

Объятия словари и списки, они являются повседневной тариф программирования Python. – cdarke

ответ

0

Почему вы не можете просто отправить выбор входа пользователя в message() в качестве параметра? Возможно, создайте словарь products с пользовательскими вводами в качестве ключей и продуктов в качестве значений. Затем message(products[userInput]).

1

Насколько сложнее словарь, чем у вас уже есть? Словарь будет убирать много кода и получить поездку 1/3 линий, в основном elif сек

vendingdict = {"A1": ["Snickers", 0.89], 
       "A2": ["M&Ms", 1.39], 
       "A3": ["Lays", 0.50]} 
def main(): 
    global myselection 
    while True: 
     myselection=input("Welcome to virtue vending machine!\nMachine only takes $1 bills\nSelect your choice:\n") 
     try: 
      if vendingdict[myselection] != None: 
       break 
     except KeyError: 
      print("\nPlease input valid selection\n") 
      continue 

def bills(): 
    while True: 
     try: 
      cashin = int(input("Insert your bills: $")) 
     except ValueError: 
      print("Please insert valid tender!") 
      continue 
     cashout = 0 
     if cashin>=vendingdict[myselection][1]: 
      cashout = cashin - vendingdict[myselection][1] 
      print("Your change is $%.2f" % cashout) 
      print("Your %s is below!" % vendingdict[myselection][0]) 
      break 
     else: 
      print("Insufficient money, please insert more.") 
      print(cashin) 
      cashin = 0 
      continue 


main() 
bills() 
+0

Используя то, что я получил, как бы вы поместили пользователя внутри сообщения()? Я попытался вернуть значение, но оно не работает. Словарь казался мне сложным, потому что индекс. – lastdancestop

+0

Я не совсем уверен, что вы подразумеваете, поставив пользователя внутри сообщения() ... Словарь - это просто справочная таблица. Номенклатура: 'dictionary [key]' где 'dictionary' - это переменная, в которой находится ваш словарь, и' [key] '- это один из поисков с присвоенными ему значениями. Вы можете назначить любые допустимые типы python. Когда вы вызываете ключ из словаря, такого как 'dictionary [key]', вам возвращается значение, присвоенное этому ключу. – Kyrubas

Смежные вопросы