Home > Back-end >  why do i keep getting this python error cost is not defined?
why do i keep getting this python error cost is not defined?

Time:11-16

i wrote this code i get an error say cost is not defined

print("============================================================\n"
      "                 Welcome to Pizza Store                              \n"
      "============================================================\n")
def welcomescreen():
    print("1) Menu for the Pizza")
    print("2) Order the Pizza")
    print("3) Exit the program")
    ch = input("Select from one of the above: ")
    return ch
def main():
    choice = welcomescreen()
    while choice != '3':
            # based on user choice add appropriate method
        if choice == '1':
            print("1. Pepperoni               9 AED\n2. Margherita              12 AED\n3. Vegetarian              15 AED\n4. Neapolitan              21 AED")
            ask = input("Do you want to go back to the main menu? yes/no : \n").lower()
            if ask == "yes":
                main()
            elif ask == "no":
                break
        elif choice == '2':
            n=int(input("Enter the number of pizzas to be ordered: "))
            kind=input("Enter the kind of Pizza: ")
            size=input("Enter the size of Pizza\n(Large (50 AED),Medium (40 AED), Small (30 AED) : ")
            if(size == "Large"):
                cost_size=n*50
            elif(size == "Medium"):
                cost_size=n*40
            elif(size == "Small"):
                cost_size = n*30
            if(kind == "Pepperoni"):
              cost= n*10
              pizza = 'Pepperoni'
            elif(kind== "Margherita" ):
                cost= n*15
                pizza = "Margherita"
            elif(kind == "Vegetarian" ):
                cost= n*20
                pizza = "Vegetarian"
            elif(kind== "Neapolitan"):
                cost= n*18
                pizza = "Neapolitan"
            d=input("Enter toppings: \n").split(" ")
            extra=0
            if(len(d)>3):
                 extra= n*3*(len(d)-3)
#final Bill
            print("---------------------Your BILL-----------------------\n")
            print("The Pizza kind :", kind)
            print("The size :", size)
            print("Number of pizzas :  x", n)
            print("Extra toppings :")
            for i in d:
                print(i,end=" ")
            print("\n")
            print("==========Breakdown of bill========== \n")
            print("Bill for pizza         : ", cost)
            print("Bill for size         : ",cost_size)
            print("Bill for extra toppings: ",extra)
            print("Total Bill             : ",cost cost_size extra)

        else:
            print("Invalid choice. Try again.")
        
        choice = welcomescreen()

    print("Thank you! Have a nice day :)")
main()
 

the error i get is:


============================================================ Welcome to Pizza Store

  1. Menu for the Pizza
  2. Order the Pizza
  3. Exit the program Select from one of the above: 2 Enter the number of pizzas to be ordered: 1 Enter the kind of Pizza: pepperoni Enter the size of Pizza (Large (50 AED),Medium (40 AED), Small (30 AED) : large Enter toppings: pepperoni ---------------------Your BILL-----------------------

The Pizza kind : pepperoni The size : large Number of pizzas : x 1 Extra toppings : pepperoni

==========Breakdown of bill==========


Exception has occurred: UnboundLocalError
cannot access local variable 'cost' where it is not associated with a value
  File "C:\Users\mandoof1\Downloads\Pizza part A.py", line 57, in main
    print("Bill for pizza         : ", cost)
  File "C:\Users\mandoof1\Downloads\Pizza part A.py", line 68, in <module>
    main()

what is supposed to happen is take the cost based on your input and give you the bill

CodePudding user response:

cost is only defined if kind is one of the three strings you check against in your if/elifs. Specifically, I think whats happening is that you're putting in 'pepperoni' but you really want to put in 'Pepperoni' (notice the capitalization)

To handle this more generally, you probably want to:

  1. .lower() the input kind and what you're checking against so you don't have to worry about capitalization
  2. Have an else clause when checking kind, so that if the user puts in something unexpected you know about it.
  3. Repeat these two fixes for the size input as well.
  • Related