# Functions go here def string_check(question, valid_ans_list, num_letters): """Checks that users enter the full word or the first letter of a word from alist of valid responses""" while True: response = input(question).lower() for item in valid_ans_list: # check if the response is the entire word if response == item: return item # check if it's the 'n' letter elif response == item[:num_letters]: return item print(f"Please choose an option from {valid_ans_list}") # int number check function def int_check(question, low, high): """Checks users enter an integer between two values""" error = f"Oops - please enter an integer between {low} and {high}." while True: try: # Change the response to an integer and check that it's more than zero response = int(input(question)) if low <= response <= high: return response else: print(error) except ValueError: print(error) # Main routine goes here yes_no_list = ['yes', 'no'] payment_list = ['cash', 'credit'] like_coffee = string_check("Do you like coffee ☕? ", yes_no_list, 1) print(f"You chose {like_coffee}") pay_method = string_check("Payment method, Cash💵 or Credit?💳 : ", payment_list, 2) print(f"You chose {pay_method}") cost = int_check('Enter a number between 4 and 6', 4, 6) if pay_method == 'credit': charge = (cost * 2.5) /100 cost_charge = round(cost + charge, 2 ) print(f" Surcharge = ${charge} Total cost = ${cost_charge}" ) else: print(f" Total cost = ${cost}")