Search

Pentesting Guide and Notes

Certification Reviews

Writeups

Jet’s Pizza

Challenge

Jet's Pizza is opening up for business and they're tring to figure out an easy way to calculate the price of a pizza. Pizzas can have any combination of the following toppings (at least one topping is required per pizza): tomatoes (+$1.50), onions (+$1.25), pineapple (+$3.50), mushrooms (+$3.75), and avocado (+$0.40). The base price of a pizza is $15 but if the total ends up being over $20, a 5% discount is applied (with the final price rounded to the nearest cent). Your job is to create a program (Python 3.8) that takes in a user's topping preference and return the pizza's price.

Sample Input 1:TPMSample Output 1:22.56Explanation 1:The toppings of tomatoes (T), pineapple (P), and mushrooms (M) add $8.75 to the base price of $15. Because this is over $20, a 5% discount is applied.

Sample Input 2:AAAAAAAMMTGTMMMXMMTSample Output 2:19.62Explanation 2:Though some toppings are repeated and in a random order, they still only count once. Avocadoes, mushrooms, and tomatoes add $5.65 to the base price of $15. Because this is over $20, a 5% discount is applied. The characters that do not correspond to valid toppings (G and X) are ignored.

Notes:

  • the seven inputs will be passed in (through stdin) separated by newlines; make sure your output (returned on stdout) is also separated by newlines
  • format your outputs as standard dollar amounts (rounded to the nearest cent with trailing zeroes as necessary) without the dollar sign
  • Every input will consist of at least one valid topping.

Solution

def main():
    topings_prices = {"T": 1.5, "O": 1.25, "P": 3.5, "M": 3.75, "A": 0.4}
    totals_list = []

    for order_id in range(7):

        total = 15.0

        topings = input()

        topings_selected = []

        for toping in topings:
            if toping not in topings_selected and toping in topings_prices.keys():
                topings_selected.append(toping)
                total += topings_prices[toping]

        if total > 20.0:
            total = total * 0.95

        total = '{:,.2f}'.format(round(total, 2))

        totals_list.append(total)

    for total in totals_list:
        print(total)

main()