diff --git a/1.py b/1.py index fd6cfeb..c8fafa5 100644 --- a/1.py +++ b/1.py @@ -1,32 +1,75 @@ -MENU = { - 'espresso': { - 'ingredients': { - 'coffee': 19, - 'water': 35, - }, - 'price': 1.99, - }, - 'latte': { - 'ingredients': { - 'coffee': 24, - 'water': 50, - 'milk': 150, - }, - 'price': 2.39, - }, - 'flat white': { - 'ingredients':{ - 'coffee': 24, - 'water': 60, - 'milk': 50, - }, - 'price': 3.19, - } -} - -INVENTORY = { - 'coffee': 100, - 'water': 300, - 'milk': 300, - 'money': 0, -} \ No newline at end of file +import Menu + + +def short_resources(coffe_needed,water_needed,milk_needed): + short_resource = [] + if coffe_needed>Menu.INVENTORY['coffee']: + short_resource.append('coffee') + if milk_needed>Menu.INVENTORY['milk']: + short_resource.append('milk') + if water_needed>Menu.INVENTORY['water']: + short_resource.append('water') + print(f"There is not enough {', '.join(short_resource)}") + +def have_resources(coffe_needed,water_needed,milk_needed): + if coffe_needed <= Menu.INVENTORY['coffee'] and water_needed <= Menu.INVENTORY['water'] and milk_needed <= Menu.INVENTORY['milk']: + return True + else: + short_resources(coffe_needed,water_needed,milk_needed) + +def money_check(taken_order,money_needed): + print(f"Price of Your drink {taken_order} is {money_needed}$") + print("Insert coins(Only quarters, dimes, nickles and pennies)") + quarters = int(input("How many quarters:")) + dimes = int(input("How many dimes:")) + nickles = int(input("How many nickles:")) + pennies = int(input("How many pennies:")) + money_inserted = quarters*0.25 + dimes*0.1 + nickles*0.05 + pennies*0.01 + if money_inserted >= money_needed: + return money_inserted + else: + print( f"Sorry that's not enough money. Money refunded") + return 0 + + +def its_order(taken_order): + money_needed = Menu.MENU[taken_order]['price'] + coffe_needed = Menu.MENU[taken_order]['ingredients']['coffee'] + water_needed = Menu.MENU[taken_order]['ingredients']['water'] + milk_needed = 0 + if taken_order != 'espresso': + milk_needed = Menu.MENU[taken_order]['ingredients']['milk'] + + if have_resources(coffe_needed,water_needed,milk_needed): + money_inserted = money_check(taken_order, money_needed) + if money_inserted!=0: + Menu.INVENTORY['money'] += money_needed + if money_inserted>money_needed: + print(f"Here is {round(money_inserted-money_needed, 2)}$ in change") + Menu.INVENTORY['milk'] -= milk_needed + Menu.INVENTORY['water'] -= water_needed + Menu.INVENTORY['coffee'] -= coffe_needed + print("Here is your order") + +def report(): + for key in Menu.INVENTORY: + post = "ml" + if key=="coffe": + post = "g" + elif key=="money": + post = "$" + print(f"{key}: {Menu.INVENTORY[key]}{post}") + +continue_buying = True +while continue_buying: + valid_order = ['espresso','latte', 'cappuccino'] + order = input("What would you like? (espresso/latte/cappuccino/off/report)") + if order == "off": + continue_buying = False + elif order == "report": + report() + else: + if order in valid_order: + its_order(order) + else: + print("Invalid input") \ No newline at end of file diff --git a/2.py b/2.py index bc686dd..ce0b399 100644 --- a/2.py +++ b/2.py @@ -16,7 +16,48 @@ def send_email(msg, email): """ ... + # Solution goes here +class Patient: + + def __init__(self, first_name, second_name, title, birth_date, email, phone_number, mobile_number): + self.first_name = first_name + self.second_name = second_name + self.title = title + self.birth_date = birth_date + self.email = email + self.phone_number = phone_number + self.mobile_number = mobile_number + + def greeting(self): + return f"Hello {self.title} {self.first_name} {self.second_name}" + + def calculating_age(self,current_date): + age = current_date.year - self.birth_date.year + month = current_date.month - self.birth_date.month + days = current_date.day - self.birth_date.day + if days < 0: + month -= 1 + days += 30 + if month < 0: + age -= 1 + + return f"{age} Y {month} M {days} D" + + def send_appointment_reminder(self, appointment_date): + current_date = datetime.now() + age = self.calculating_age(current_date) + + msg = f"Dear {self.first_name}, your appointment is scheduled for {appointment_date.strftime('%Y-%m-%d %H:%M')}.\n" + msg += f"Your age is {age}" + + send_sms(msg, self.mobile_number) + send_email(msg, self.email) + + print(msg) + + + patient1 = Patient( 'John', diff --git a/3.py b/3.py new file mode 100644 index 0000000..a65dfb0 --- /dev/null +++ b/3.py @@ -0,0 +1,104 @@ +import Menu + +class coffee_shop: + + def __init__(self, order, left_coffee, left_milk, left_water, left_money, coffee_needed, milk_needed, water_needed, money_needed): + self.order = order + self.left_coffee = left_coffee + self.left_milk = left_milk + self.left_water = left_water + self.left_money = left_money + self.coffee_needed = coffee_needed + self.milk_needed = milk_needed + self.water_needed = water_needed + self.money_needed = money_needed + + def short_resources(self): + short_resource = [] + if self.coffee_needed > self.left_coffee: + short_resource.append('coffee') + if self.milk_needed > self.left_milk['milk']: + short_resource.append('milk') + if self.water_needed > self.left_water['water']: + short_resource.append('water') + print(f"There is not enough {', '.join(short_resource)}") + + def have_resources(self): + if self.coffee_needed <= self.left_coffee and self.water_needed <= self.left_water and milk_needed <= self.left_milk: + return True + else: + self.short_resources() + + def money_check(self): + print(f"Price of Your drink {self.order} is {self.money_needed}$") + print("Insert coins(Only quarters, dimes, nickles and pennies)") + quarters = int(input("How many quarters:")) + dimes = int(input("How many dimes:")) + nickles = int(input("How many nickles:")) + pennies = int(input("How many pennies:")) + money_inserted = quarters * 0.25 + dimes * 0.1 + nickles * 0.05 + pennies * 0.01 + if money_inserted >= self.money_needed: + return money_inserted + else: + print(f"Sorry that's not enough money. Money refunded") + return 0 + + def its_order(self): + if self.have_resources(): + money_inserted = self.money_check() + if money_inserted != 0: + if money_inserted > money_needed: + print(f"Here is {round(money_inserted-self.money_needed, 2)}$ in change") + print("Here is your order") + return money_needed, milk_needed, water_needed, coffee_needed + return 0, 0, 0, 0 + + +def report(): + for key in Menu.INVENTORY: + post = "ml" + if key =="coffe": + post = "g" + elif key =="money": + post = "$" + print(f"{key}: {Menu.INVENTORY[key]}{post}") + + +continue_buying = True +while continue_buying: + valid_order = ['espresso','latte', 'cappuccino'] + order = input("What would you like? (espresso/latte/cappuccino/off/report)") + if order == "off": + continue_buying = False + elif order == "report": + report() + else: + if order in valid_order: + left_coffee = Menu.INVENTORY['coffee'] + left_milk = Menu.INVENTORY['milk'] + left_water = Menu.INVENTORY['water'] + left_money = Menu.INVENTORY['money'] + money_needed = Menu.MENU[order]['price'] + coffee_needed = Menu.MENU[order]['ingredients']['coffee'] + water_needed = Menu.MENU[order]['ingredients']['water'] + milk_needed = 0 + if order != 'espresso': + milk_needed = Menu.MENU[order]['ingredients']['milk'] + c_m = coffee_shop( + order, + left_coffee, + left_milk, + left_water, + left_money, + coffee_needed, + milk_needed, + water_needed, + money_needed, + ) + changes = c_m.its_order() + Menu.INVENTORY['money'] += changes[0] + Menu.INVENTORY['milk'] -= changes[1] + Menu.INVENTORY['water'] -= changes[2] + Menu.INVENTORY['coffee'] -= changes[3] + else: + print("Invalid input") \ No newline at end of file diff --git a/Menu.py b/Menu.py new file mode 100644 index 0000000..560e631 --- /dev/null +++ b/Menu.py @@ -0,0 +1,32 @@ +MENU = { + 'espresso': { + 'ingredients': { + 'coffee': 19, + 'water': 35, + }, + 'price': 1.99, + }, + 'latte': { + 'ingredients': { + 'coffee': 24, + 'water': 50, + 'milk': 150, + }, + 'price': 2.39, + }, + 'cappuccino': { + 'ingredients':{ + 'coffee': 24, + 'water': 60, + 'milk': 50, + }, + 'price': 3.19, + } +} + +INVENTORY = { + 'coffee': 100, + 'water': 300, + 'milk': 300, + 'money': 0, +} \ No newline at end of file