Python Sunday Oct 31

Python Sunday Oct 31

Scratchpad #1

# print(1 + 2)


# # Please follow the PEMDAS rule
# print((2 + 2) * 2)  # hello world sada sadsadsad

# # print(100 / 3)


current_year = 2021

current_year + 2
print(current_year * 2)

next_year = current_year + 1

print(current_year / 2)


day_in_a_week = 7

dayInAWeek  # camel casing
DayInAWeek  # pascal
# day-in-a-week #

Scratchpad #2

# # score: int = 100
# # score = "hello"

# # print(score)

# # twitter_handle = None


# first_name = "John"

# message = "He said, \"this 'is' good\""

# # ['message', '=', 'He said, ']


# "You have 5 items in your cart."


# first_name = "John"

# print(first_name[0])

message = "John Doe is a Python programmer"


# message.lower().find("python")


message.find("Python").upper()

Scratchpad #3

# 100 - 50

# score = 1 - 10 + 2

# print(score)
# print("Hello World")

# print("Amount of USD you want to convert?")

# usd = input("Amount of USD you want to convert: ")

# inr = float(usd) * 74.87

# inr = round(inr, 2)

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


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


# if age < 18:
#     print("You are younger than 18")
# elif age == 18:
#     print("You are 18")
# elif age == 21:
#     print("You are 21")
# else:
#     print("You are older than 18")

# if age:
#     print(f"You are {age} years old")


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


# if name:
#     print(f"Hello, {name}")
# else:
#     print("Please enter your name!")


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

# if age > 18:
#     print("You are allowed to enter but not drink")
# elif age > 21:
#     print("You can enter and drink")
# elif age > 65:
#     print("Drinks are free")
# else:
#     print("You are not allowed")


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

# if age >= 18 and age < 21:
#     print("You are allowed to enter but not drink")
# elif age >= 21 and age < 65: # else if
#     print("You can enter and drink")
# elif age > 65:
#     print("Drinks are free")
# else:
#     print("You are not allowed")


# if age >= 18 and age < 21:
#     print("You are allowed to enter but not drink")

# if age >= 21 and age < 65:  # else if
#     print("You can enter and drink")

# if age > 65:
#     print("Drinks are free")
# else:
#     print("You are not allowed")


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

# if age > 18:
#     if age > 65:
#         print("Drinks are free")
#     elif age > 21:
#         print("You can enter and drink")
#     else:
#         print("You are allowed to enter but not drink")
# else:
#     print("You are not allowed")

# if age > 18:
#     print("You are allowed to enter but not drink")
# elif age > 21:
#     print("You can enter and drink")
# elif age > 65:
#     print("Drinks are free")
# else:
#     print("You are not allowed")


# player1 = input("Please enter player 1 choice: ")
# player2 = input("Please enter player 2 choice: ")

# if (
#     (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")
# elif player1 == player2:
#     print("It's a tie")
# else:
#     print("Something went wrong")


# for num in range(1000000):
#     print(f"{num} - Hello World")


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


# for num in range(100, 201):
#     print(num)


# for num in range(15):
#     print(num)

# for num in range(1, 5):
#     print(num)


# for num in range(0, 21, 5):
#     print(num)


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

8097297331

Scratchpad #4

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


# # for num in range(50, 100):
# #     print(num)


# # for num in range(0, 51, 5):
# #     print(num)


# # for num in range(50, 0, 5):
# #     print(num)


# # for num in range(1, 21):
# #     if num == 5 or num == 16:
# #         print("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: ")

# # num = 0

# # while password != "john123":
# #     print(f"{num}: Wrong password")
# #     num += 1
# #     password = input("Please enter again: ")


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


# # num = 0

# # while num < 100:
# #     print(num)
# #     num = num + 1


# # from random import randint

# # random_num = randint(1, 10)


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


# # while password != "john123":
# #     if password == "exit":
# #         break

# #     print("Wrong password")
# #     password = input("Please enter again: ")

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

# # while True:
# #     if password == "john123":
# #         break

# #     print("Wrong password")
# #     password = input("Please enter again: ")


# # ksnd
# # john


# # while password != "john123":
# #     print("Wrong password")
# #     password = input("Please enter again: ")


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

# # while count < 2:
# #     if password == "john123":
# #         break

# #     print("Wrong password")
# #     password = input("Please enter again: ")
# #     count += 1


# from random import randint

# random_num = randint(1, 10)  # 6

# while True:
#     guess = int(input("Pick a number between 1 and 10: "))  # 5

#     if guess < random_num:
#         print("Too low")
#     elif guess > random_num:
#         print("Too high")
#     else:
#         print("Correct!")
#         print(guess)

#         play_again = input("Do you want to play again (y/n): ")
#         if play_again == "y":
#             random_num = randint(1, 10)
#         else:
#             print("Thank you for playing")
#             break


# tasks = "pay bills,practice python,other task"

tasks = ["pay bills", "practice python", "other task"]

Scratchpad #5

# # tasks = ["pay bills", "practice python", "other task"]


# # print(tasks)


# # for task in tasks:
# #     print(task)


# # tasks = ["pay bills", "practice python", "other task"]

# # i = 0

# # while i < len(tasks):
# #     print(tasks[i])
# #     i += 1


# # langs = ["Python", "JavaScript", "Rust", "Elm", "WASM"]


# # for lang in langs:
# #     print(lang.upper())


# # i = 0

# # while i < len(langs):
# #     print(f"{i + 1}: {langs[i]}")
# #     i += 1


# # i = 1
# # for lang in langs:
# #     print(f"{i}: {lang}")
# #     i += 1


# tasks = []

# while True:
#     task = input("Add task to list (q to quit): ")

#     if task == "":
#         print("Please enter a valid task.")
#     elif task == "q":
#         break
#     else:
#         tasks.append(task)

# print(f"You have {len(tasks)} tasks to complete:")

# for task in tasks:
#     print(task)


# langs = ["Python", "JavaScript", "Rust", "Elm", "WASM", "Lua"]

# print(langs.pop())
# deleted_item = langs.pop()

# print(langs)

# print(deleted_item)


# nums = [1, 4, 3, 7, 9]

# squared = []

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

# print(squared)


# nums = [1, 4, 3, 7, 9]
# cubed = [num ** 3 for num in nums]
# print(cubed)


# nums = [1, 4, 3, 2, 24, 9, 12, 13, 15, 18]

# squared = [LOGIC for num in nums if COND]
# squared = [num ** 2 for num in nums if num % 2 == 0]
# print(squared)

# new_nums = [LOGIC if COND else LOGIC for num in nums]
# new_nums = [num ** 2 if num % 2 == 0 else num ** 3 for num in nums]
# print(new_nums)


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

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

# new_nums = []

# for lst in nums:
#     squared = []
#     for num in lst:
#         squared.append(num ** 2)
#     new_nums.append(squared)

# new_nums = [[num ** 2 for num in lst] for lst in nums]


# new_nums = [
#     [num ** 2 if num % 2 == 0 else num ** 3 for num in lst]
#     if len(lst) > 3
#     else [num ** 4 if num % 2 == 0 else num ** 5 for num in lst]
#     for lst in nums
# ][:: [num ** 2 for num in nums[0]][1]][0][-1]

# print(new_nums)

Scratchpad #6

# product1 = ["iPhone 13", "Apple", 100000, 80, "Some description/info"]
# product2 = ["Apple", "iPhone 13", 80, 100000, "Some description/info"]


# print(product1[0])
# print(product2[1])


# product3 = {
#     "name": "iPhone 13",
#     "description": "Some description and details",
#     "price": 100000,
#     "brand": "Apple",
#     "stock": 80,
#     "features": ["camera", "microphone"],
#     "info": {"creator": "Steve Job", "address": "Mountain View"},
# }

# product4 = {
#     0: "iPhone 13",
#     1: "Some description and details",
#     2: "Apple",
#     3: 100000,
#     4: 80,
# }


# # print(product3["name"])
# # print(product3["description"])
# print(product4[0])


# profile = {"first_name": "John", "last_name": "Doe", "age": 25}

# profile2 = dict(first_name="John", last_name="Doe", age=25)

# print(profile, profile2)


# print(profile["first_name"])
# print(profile["profession"])

# print(profile)

# profile["profession"] = "Python Dev"
# profile["age"] = 30

# print(profile)


# profile = {"first_name": "John", "last_name": "Doe", "age": 25}

# print(profile["first_name"])
# ["John", "Doe", 25]
# ["first_name", "last_name", "age"]

# for item in profile.values():
#     print(item)

# for item in profile.keys():
#     print(item, profile[item])


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

# for key, value in profile.items():
#     print(key, value)


# for k, v in profile.items():
#     print(k, v)


# song = {
#     "name": "Parabola",
#     "artist": "Tool",
#     "album": "Lateralus",
#     "released": 2001,
#     "genres": ["Progressive/Art Rock", "Progressive metal"],
# }

# for item in song:
#     print(item)


# names = ["john", "jane", "jack", "james"]

# upper_names = [item.upper() for item in names]

# print(upper_names)


# song = {
#     "name": "Parabola",
#     "artist": "Tool",
#     "album": "Lateralus",
#     "released": 2001,
# }

# song_mod = {item.upper(): song[item] for item in song}

# print(song_mod)

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

# nums_new = {num: "hello" for num in nums}

# print(nums_new)

# print({num: num ** 4 for num in range(50)})


# song = {
#     "name": "Parabola",
#     "artist": "Tool",
#     "album": "Lateralus",
# }


# song2 = {k.upper(): v.lower() for k, v in song.items()}

# print(song2)


locations = {
    (1.2132141234, 0.213123): "Mumbai Office",
    (0.123213213, 1.213123213): "Pune Office",
}


airports = (("BOM", "Mumbai"), ("MAA", "Chennai"), ("DEL", "Delhi"))

Scratchpad #7

# print("100")


# def greet():
#     print("Hello World")
#     print("Hello World")
#     print("Hello World")
#     print("Hello World")
#     print("Hello World")
#     print("Hello World")


# greet()

# print(greet)


# def square_of_10():
#     return "hello world"
#     result = 10 * 10
#     # return result


# print(square_of_10())

# print(square_of_10())

# score = 10000

# print(print(square_of_10()))

# some_num = square_of_10()

# print(some_num)


# def square(num):
#     return num * num


# print(square(12))
# print(square(4))


# def greet(name, message):
#     return f"{message}, {name}"


# name = input("Enter your name: ")
# message = input("Enter a message: ")

# print(greet(name, message))

# print(greet("James", "Hi"))


# def square(num):
#     return num * num


# def cube(num):
#     return square(num) * square(num)


# def do_something(a, b):
#     return cube(a) + cube(b)


# print(do_something(4, 5))

# import random


# def flip_coin():
#     if random.random() > 0.5:
#         return "HEADS"
#     else:
#         return "TAILS"


# print(flip_coin())


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


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


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


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

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


# 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]))


# def is_odd_number(number):
#     if number % 2 != 0:
#         return "ODD"
#     return "EVEN"


# print(is_odd_number(9))
# print(is_odd_number(4))


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


# print(mul())


def print_name(first_name, last_name="smith"):
    print(f"My name is {first_name} {last_name}")


print_name(first_name="john")


# rahul@rstforum.co.in

Scratchpad #8

# # name = "John Doe"
# # name = "Jack Smith"
# # age = 25


# # def greet():
# #     def say_hello():
# #         movie = "Spiderman - no way home."
# #         print(name, age, movie)

# #     say_hello()

# # print(name, age)

# name = "Jack Smith"
# age = 25


# def greet():
#     global age
#     age += 1
#     print(f"{name} is {age} years old.")


# # def greet(age):
# #     age += 1
# #     print(f"{name} is {age} years old.")


# # greet(age)
# # greet(age)
# # greet(50)
# # greet(age)

# # print(age)


# def outer():
#     count = 0

#     def inner():
#         nonlocal count
#         count += 1
#         print(count)

#     inner()


# outer()


from random import choice

# Generate random password
# count -> int
# def gen_password(count):
#     """Generate a random password that contains
#     upper and lowercase chars, numbers and special chars

#     @params
#     count: int

#     @return -> str
#     """
#     password = ""
#     lower_alpha = "abcdefghijklmnopqrstuvwxyz"
#     nums = "0123456789"
#     symbols = "!@#$%^&*()"
#     vals = lower_alpha + lower_alpha.upper() + nums + symbols

#     while len(password) < count:
#         password += choice(vals)

#     return password


# print(gen_password(8))

# print(gen_password.__doc__)
# print(help(gen_password))


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


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


# def profile(**kwargs):
#     for k, v in kwargs.items():
#         print(k, v)


# profile(name="John Doe", age=25, profession="Programmer")


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


# show_info(10, 23, 14, 15, 16, role="moderator", hello="world", info=True)


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


# nums = [10, 23, 14, 15, 16]

# print(add(*nums, 25, 25))
# # print(add(nums, 10))


# def greet(first_name, last_name):
#     print(f"My name is {first_name} {last_name}.")


# profile = {"first_name": "John", "last_name": "Doe"}

# greet(**profile)
# # greet(first_name="John", last_name="Doe")


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


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

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


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


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


# test = lambda a, b: a / b
# math(10, 5, sub)
# print(test(10, 2))


# names = ["john", "jane", "jack", "james"]

# upper_cased1 = [name.upper() for name in names]

# def uppercase(name):
#     return name.upper()
# upper_cased2 = map(uppercase, names)

# upper_cased2 = map(lambda name: name.upper(), names)

# print(upper_cased1)
# print(list(upper_cased2))


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

# evens1 = [num for num in nums if num % 2 == 0]
# print(evens1)

# evens2 = filter(lambda num: num % 2 == 0, nums)
# print(list(evens2))


# names = ["John", "Jack", "James", "Desmond", "Charlie", "Jacob"]

# # less_than_5_chars = filter(lambda name: len(name) < 5, names)
# uppercased = map(lambda name: name.upper(), filter(lambda name: len(name) < 5, names))

# # uppercased = [name.upper() for name in names if len(name) < 5]

# # print(list(less_than_5_chars))
# print(list(uppercased))


# nums = [12, 23, 435, 2, 323, 3, 34, -234, 0]

# print(all(nums))

people = ["John", "Jack", "James", "Jason", "Bane", "Jacob"]

print(all(people))

Scratchpad #9

# my_list = [{"name": "John"}, {}, {"name": "Jack"}]

# # print(all(my_list))

# if all(my_list):
#     for item in my_list:
#         print(item["name"])
# else:
#     print("Data not good")


# people = ["John", "Jack", "James", "Jason", "Brad", "Jane", "Jacob"]


# print(any([name[0] == "J" for name in people]))


# def colorize(text, color):
#     colors = ("red", "yellow", "green", "blue", "white", "black")

#     if type(text) is not str:
#         raise TypeError("Incorrect Type")

#     if type(color) is not str:
#         raise TypeError("Incorrect Type")

#     if color not in colors:
#         raise ValueError("Color is not supported")

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


# colorize(10, "purple")


# def divide(a, b):
#     try:
#         print(a / b)
#     except (ZeroDivisionError, TypeError):
#         print("Something went wrong")
#     # except TypeError:
#     #     print("Can't divide strings")


# def divide(a, b):
#     try:
#         print(a / b)
#     except Exception as err:
#         print(err)


def divide(a, b):
    try:
        result = a / b
    except Exception as err:
        print(err)
    else:
        print(result)
    finally:
        print("THIS FUNCTION RAN")


divide(10, 0)

Scratchpad #10

# # def login(user, password):
# #     if password == user["passwd"]:
# #         print("Welcome")
# #     else:
# #         print("Incorrect password")

# # login(john, "test@123")
# # login(jane, "test")


# def user(first_name, last_name, email, phone, passwd):
#     return {
#         "first_name": first_name,
#         "last_name": last_name,
#         "email": email,
#         "phone": phone,
#         "passwd": passwd,
#         "login": lambda user, passwd: print("welcome")
#         if passwd == user["passwd"]
#         else print("Incorrect"),
#     }


# john = user("John", "Doe", "john@gmail.com", 9210983213, "test")
# jane = user("Jane", "Doe", "jane@gmail.com", 9210983213, "test")

# # print(john["last_name"])
# john["login"](john, "test@123")

# # print(john["last_name"])

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


# class User:
#     def __init__(self, first_name, last_name, birth_year, email, phone, passwd):
#         self.first_name = first_name
#         self.last_name = last_name
#         self.email = email
#         self.phone = phone
#         self.passwd = passwd
#         self.age = 2021 - birth_year

#     def login(self, passwd):
#         if passwd == self.passwd:
#             print("Welcome")
#         else:
#             print("Incorrect Password")

#     def upload_picture(self, url):
#         pass


# james = User("James", "Smith", "johnsmith@gmail.com", 214324324, "test123")

# print(james.first_name)

# # print(james.last_name)
# james.login("test")


# print(james)

# james.upload_picture()


# class Vehicle:
#     def __init__(self, make, model, year):
#         self.make = make
#         self.model = model
#         self.year = year
#         self.country = "India"


# ford = Vehicle("Ford", "Mustang", 2020)
# suzuki = Vehicle("Maruti", "Wagon R", 2021)

# print(ford.model)
# print(suzuki.model)
# print(ford.country)
# print(suzuki.country)


class User:
    def __init__(self, first_name, last_name, dob):
        self.first_name = first_name
        self.last_name = last_name
        self.__dob = dob

    def get_age(self):
        age = 2022 - int(self.__dob.split("/")[-1])
        return age

    def get_dob(self):
        return self.__dob


user1 = User("John", "Doe", "12/3/2000")
user2 = User("John", "Doe", "13/4/2001")

jane = User("Jane", "Doe", "14/5/2002")

jane.get_dob()

# print(user1.first_name)
# print(user2.first_name)

# user2.get_age()

jane.get_age()


# print(user1._User__dob)
# print(user1.get_age())

# print(user1.first_name)
# print(user1.last_name)
# print(user1.dob)

Scratchpad #11

# class User:
#     total_users = 0
#     active = 0

#     def __init__(self, first_name, last_name, age):
#         self.first_name = first_name
#         self.last_name = last_name
#         self.age = age
#         User.total_users += 1

#     def __str__(self):
#         return f"{self.first_name} {self.last_name}"

#     @classmethod
#     def get_total_users(cls):
#         print(f"Total Users: {cls.total_users}")

#     def info(self):
#         print(f"My name is {self.first_name} {self.last_name}")

#     def login(self):
#         User.active += 1
#         print(f"{self.first_name} has logged in.")

#     def logout(self):
#         User.active -= 1
#         print(f"{self.first_name} has logged out.")


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

# print(user1)
# print(user2)

# user1.login()
# user2.login()
# user1.logout()


# user1.info()
# user2.info()

# print(user1.active)
# print(user2.active)

# print(User.active)


# User.get_total_users()
# user1.get_total_users()


# class Math:
#     @classmethod
#     def add(cls, a, b):
#         return a + b

#     @classmethod
#     def sub(cls, a, b):
#         return a - b

#     @classmethod
#     def mul(cls, a, b):
#         return a * b


# print(Math.add(10, 2))
# print(Math.sub(10, 2))

# # BASE CLASS
# class User:
#     def __init__(self, first_name, last_name, age):
#         self.first_name = first_name
#         self.last_name = last_name
#         self.age = age

#     def __str__(self):
#         return f"{self.first_name} {self.last_name}"

#     def info(self):
#         print(f"My name is {self.first_name} {self.last_name}")

#     def login(self):
#         print(f"{self.first_name} has logged in.")

#     def logout(self):
#         print(f"{self.first_name} has logged out.")


# # SUB CLASS
# class Moderator(User):
#     def login(self):
#         print(f"A mod has logged in")
#         print(f"{self.first_name} has logged in.")

#     def create_group(self, group_name):
#         print(f"{group_name} has been created.")


# john = User("John", "Doe", 25)
# jack = Moderator("Jack", "Smith", 20)

# john.login()
# jack.login()

# jack.create_group("Python")


# class User:
#     def __init__(self, name, email, password):
#         self.first_name = name
#         self.email = email
#         self._password = User.validate_password(password)

#     @classmethod
#     def validate_password(cls, password):
#         pass

# def get_password(self):
#     print(self._password)

# def set_password(self, new_password):
#     if len(new_password) < 8:
#         raise ValueError("Password has to above 8 characters")

#     if new_password.find(" ") > 0:
#         raise ValueError("Password cannot contain spaces")

#     self._password = new_password

# @property
# def password(self):
#     return self._password

# @password.setter
# def password(self, new_password):
#     if len(new_password) < 8:
#         raise ValueError("Password has to above 8 characters")

#     if new_password.find(" ") > 0:
#         raise ValueError("Password cannot contain spaces")

#     self._password = new_password


# user1 = User("John Doe", "john@email.com", "12345")

# user1.get_password()
# user1.set_password("helloworld")

# print(user1.password)

# try:
#     user1.password = "Hello World"
# except Exception as err:
#     print(err)


# class User:
#     def __init__(self, name, email):
#         self.name = name
#         self.email = email

#     def info(self):
#         return f"{self.name} - {self.email}"


# class Moderator(User):
#     def __init__(self, name, email, password):
#         super().__init__(name, email)
#         self.password = password


# user1 = User("John Doe", "john@gmail.com")
# user2 = Moderator("Jane Doe", "jane@gmail.com", "1234")

# print(user2.password)


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

#     def talk(self):
#         print("Hello, how are you?")

#     def think(self):
#         print(f"{self.name} is thinking")


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

#     def talk(self):
#         print("KAMSKJDNASLKJDNAKJDSLKJDSAN")

#     def run(self):
#         print(f"{self.name} is running")


# class Mutant(Animal, Human):
#     def talk(self):
#         print("ARRRRRRRRRRRRR")


# wolverine = Mutant("Logan")

# # wolverine.run()
# # wolverine.think()

# # wolverine.talk()


# print(help(Mutant))


# print(len("hello"))
# print(len([1, 2, 3, 4, 5, 6, 7, 8]))

# print(10 + 10)
# print("10" + "10")


# class Human:
#     def __init__(self, name, age):
#         self.name = name
#         self.age = age

#     def __str__(self):
#         return self.name

#     def info(self):
#         return f"{self.name} is {self.age} years old."

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

#     def __add__(self, another_human):
#         if isinstance(another_human, Human):
#             return Human("New Born", 0)
#         else:
#             raise Exception("This is sick!")


# class Animal:
#     pass


# tom = Animal()

# john = Human("John Doe", 20)
# jane = Human("Jane Doe", 21)


# print(len(john))

# print(john + jane)


# def my_for(iterable):
#     iterator = iter(iterable)

#     while True:
#         try:
#             print(next(iterator))
#         except StopIteration:
#             break


# def my_map(func, iterable):
#     iterator = iter(iterable)

#     while True:
#         try:
#             func(next(iterator))
#         except StopIteration:
#             break


# # my_for([1, 34, 23, 14, 5])

# my_map(lambda num: print(num * num), [1, 2, 3, 4])


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

    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


c = Counter(0, 100, 5)
r = range(0, 10)


for num in c:
    print(num)

Scratchpad #12

# def count_to(max):
#     count = 1
#     while count <= max:
#         yield count
#         count += 1


# counter = count_to(5)

# print(next(counter))
# print(next(counter))
# print(next(counter))
# print(next(counter))
# print(next(counter))
# print(next(counter))
# print(next(counter))
# print(next(counter))


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


# # print(fib_list(100000))


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


# for num in fib_gen(100000):
#     print(num)

# from time import time

# # list_start_time = time()
# # print(sum([num for num in range(1000000000)]))
# # list_end_time = time() - list_start_time

# gen_start_time = time()
# print(sum(num for num in range(1000000000000000000)))
# gen_end_time = time() - gen_start_time

# # print(f"List comp took {list_end_time}")
# print(f"Gen Exp took {gen_end_time}")


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

#     return fn(a, random_num())


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


# # Higher order function
# def sum(n, func):
#     total = 0
#     for num in range(1, n + 1):
#         total += func(num)
#     return total


# # callback function
# def square(n):
#     return n * n


# # callback function
# def cube(n):
#     return n * n * n


# print(sum(10, cube))  # callback

# import random

# # Higher order function
# 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"))
# # print(greet("John"))
# # print(greet("John"))
# # print(greet("John"))

# import random

# # Function factory
# 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


# greet_john = make_greet_func("John")
# greet_jane = make_greet_func("Jane")

# print(greet_john())
# print(greet_jane())


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

#     return wrapper


# @stars  # say_hello = stars(say_hello)
# def say_hello():
#     print("Hello World")


# # @classmethod # test = classmethod(test)
# # def test():
# #     pass

# say_hello()


def stars(fn):
    """Will add 10 stars to the top and bottom"""

    def wrapper(*args, **kwargs):
        """Internal wrapper function.
        This is what you will actually use
        """
        print("*" * 10)
        fn(*args, **kwargs)
        print("*" * 10)

    return wrapper


@stars
def say_hello(name):
    """Will say hello to whoever"""
    print(f"Hello, {name}")


@stars
def say_hello2(name, message):
    """Will say whatever to whoever"""
    print(f"{message}, {name}")


print(say_hello2.__doc__)

Scratchpad #13

# # from functools import wraps


# def stars(fn):
#     """Will add 10 stars to the top and bottom"""

#     @wraps(fn)
#     def wrapper(*args, **kwargs):
#         """
#         Internal wrapper function. This is what you will actually use
#         """
#         print("*" * 10)
#         fn(*args, **kwargs)
#         print("*" * 10)

#     return wrapper


# @stars
# def say_hello(name):
#     """Will say hello to whoever"""
#     print(f"Hello, {name}")


# @stars
# def say_hello2(name, message):
#     """Will say whatever to whoever"""
#     print(f"{message}, {name}")


# print(say_hello.__doc__)


# @decorator("hello")
# def func():
#     pass


# func = decorator(func)


# from functools import wraps


# def ensure_first_arg(val):
#     def inner(fn):
#         def wrapper(*args, **kwargs):
#             if args and args[0] != val:
#                 print(f"First arg should be {val}")
#             else:
#                 return fn(*args, **kwargs)

#         return wrapper

#     return inner


# @ensure_first_arg("inception")
# def fav_movies(*movies):
#     print(movies)


# # fav_movies = ensure_first_arg("inception")(fav_movies)


# fav_movies("inception", "blood diamond", "shutter island", "the beach")


# def enforce(*types):  # (str, int)
#     def inner(fn):  # announce
#         def wrapper(*args, **kwargs):  # (10, 10)
#             new_args = []
#             for a, t in zip(args, types):  # [(10, str), (10, int)]
#                 print(a, t)
#                 try:
#                     new_args.append(t(a))  # int(10)
#                 except (ValueError, TypeError) as e:
#                     return "Something went wrong"
#             return fn(*new_args)

#         return wrapper

#     return inner


# # @enforce(str, int)(annouce)


# @enforce(str, int)
# def announce(msg, times):
#     print((msg + "\n") * times)


# announce(10, "pachas")

# from pprint import pprint

# users = [
#     {"name": "John Doe", "age": 19, "phone": 12345},
#     {"name": "John Doe", "age": 19, "phone": 12345},
#     {"name": "John Doe", "age": 19, "phone": 12345},
#     {"name": "John Doe", "age": 19, "phone": 12345},
# ]


# pprint(users)


# import random
# from random import randint


# print(randint(10, 100))


# import random
from random import randint as rai, choice as ch

# import random as r

# from random import *


print(rai(0, 10))
print(ch(["hello", "world", "universe"]))

Scratchpad #14

# file = open("test.txt")

# print(file.read())

# file.close()

# file = open("test.txt")

# with open("test.txt", "r") as file:
#     print(file.read())
#     print(file.closed)

# print(file.closed)

# with open("test.txt", "w") as f:
#     f.write("Hello World\n")
#     f.write("Hello Galaxy\n")
#     f.write("Hello Universe\n")

# with open("test.txt", "w") as file:
#     file.write("Hello" * 100)

# with open("test.txt", "a") as file:
#     file.write("\n\nThis is some additional text\n")


# with open("test.txt", "r+") as file:
#     file.write("NAMESTE \nPYTHON")
#     # file.seek(40)
#     # file.write("THIS IS A PYTHON IO OPERATION")

# message = "Hello World\nThis is another line\nThis is one more line\nHello Universe\nHello Pythom"

# message = """Hello World
# This is another line
# This is one more line
# Hello Universe
# Hello Python"""


# print(message)


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

# data = data.replace("Hello", "Namaste")


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

### TASKS
# 1. search_and_replace(file, search_term, replace_term)
# 2. get_stats(file) # return {"words": 100, "chars": 100, "lines": 100}
# 3. duplicate_file(file, new_name)
# 4. read_csv -> iterator object
# 5. random_int(max) -> int


# with open("test.csv") as file:
#     data = file.readlines()
#     filtered_data = []
#     final_data = []

#     for row in data:
#         filtered_data.append(row.replace("\n", ""))

#     for row in filtered_data:
#         final_data.append(row.split(","))

#     print(final_data)

from csv import reader, DictReader, writer, DictWriter

# with open("test.csv") as file:
#     data = reader(file)
#     # print(list(data))
#     next(data)
#     for row in data:
#         print(row)


# with open("test.csv") as file:
#     # data = DictReader(file, delimiter="|")
#     data = DictReader(file)
#     # print(list(data))
#     total = 0
#     for row in data:
#         total += int(row["phone"])

#     print(total)


# with open("marvel_movies.csv", "w") as file:
#     csv_writer = writer(file)

#     csv_writer.writerow(["name", "rating"])
#     csv_writer.writerow(["Spider man - No way home", 1.5])
#     csv_writer.writerow(["Doctor Strange", 1.3])
#     csv_writer.writerow(["Desh Drohi", 5])

# with open("marvel_movies.csv", "w") as file:
#     headers = ["name", "rating"]
#     csv_writer = DictWriter(file, fieldnames=headers)
#     csv_writer.writeheader()

#     csv_writer.writerow({"name": "Thor", "rating": 3})
#     csv_writer.writerow({"name": "Suryavanshi", "rating": 1})
#     csv_writer.writerow({"name": "Pushpa", "rating": 3.4})


# with open("governors_county.csv") as file:
#     data = reader(file)
#     total_votes = 0

#     with open("indiana_county.csv", "w") as file:
#         csv_writer = writer(file)
#         for row in data:
#             if row[0] == "Indiana":
#                 csv_writer.writerow(row)

# for row in data:
#     if row[0] == "Indiana":
#         # print(row[0], row[3])
#         total_votes += int(row[3])

# print(total_votes)


# with open("governors_county.csv") as file:
#     data = reader(file)
#     total_votes = 0

#     with open("indiana_county.csv", "w") as file:
#         csv_writer = writer(file)
#         csv_writer.writerow(
#             ["state", "county", "current_votes", "total_votes", "percent"]
#         )
#         for row in data:
#             if row[0] == "Indiana":
#                 csv_writer.writerow(row)

import pickle


class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"My name is {self.name} and I am {self.age} years old")


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

# user1.introduce()
# user2.introduce()


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

with open("users.pickle", "rb") as file:
    user1, user2 = pickle.load(file)
    # print(user1)
    user1.introduce()
    user2.introduce()

Scratchpad #15

# import json
# import jsonpickle


# class User:
#     def __init__(self, name, age):
#         self.name = name
#         self.age = age

#     def introduce(self):
#         print(f"My name is {self.name} and I am {self.age} years old")


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


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

# # jsontest = jsonpickle.encode((user1, user2))

# # print(jsontest)


# with open("data.json", "w") as file:
#     stored = jsonpickle.encode((user1, user2))
#     file.write(stored)


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


import re

# pattern = re.compile(r"\d{3}\s\d{4}-?\d{4}")

# text = "Call us on 022 2334-2323 or 022 12341234"

# # result = pattern.search(text)
# result = pattern.findall(text)

# # print(result.group())
# print(result)


# def validate_phone(num):
#     """Validates a phone number. ex. pattern - 022 2312 2133"""
#     # pattern = re.compile(r"^\d{3}\s\d{4}-?\d{4}$")
#     pattern = re.compile(r"\d{3}\s\d{4}-?\d{4}")
#     match = pattern.fullmatch(num)

#     if match:
#         return True
#     else:
#         return False


# validate_phone()


# # print(validate_phone("Call us on 022 2334-2323 or 022 12341234"))
# print(validate_phone("022 2334-2323"))


# TASK

################## Bank
# name: str
# initial: str
# address: str
# phone_nos: str[]
# total_customers: Customer[]
# total_balance: float
# customers_count: int

# get_bank_info() -> {name: str, initial: str, address: str, phone_nos: str[], customers_count: int}
# get_customers_list() -> Customer[]
# find_customer_by_acc_no(acc_no) -> Customer
# find_customers_by_name(name) -> Customer[]
# export_customers_as_csv(path) -> void
# export_customers_as_json(path) -> void
# add_new_customer() -> Customer
#            // new_cust = Customer("frst", "doe", bank=self)
#            // total_customers.append(new_cust)
#            // customers_count += 1
#            // return new_cust
# __repr__() / __str__()

################## Customer
# first_name: str
# last_name: str
# dob: str                      // @requires_validation YYYY-mm-dd
# phone_no: str
# address: str
# aadhaar_card_no: str          // @requires_validation
# pan_card_no: str              // @requires_validation
# nominee_list: {name: str, phone: str, address:str, dob: str}[]
# account_no                    // generated using gen_acc_no()
# balance: float                // default 0
# bank: Bank

# __repr__() / __str__()

# deposit(amt: float) -> float
# // print - "Previous balance: Rs. {}, Current balance: Rs. {}"

# withdraw(amt: float) -> float
# // print - "Previous balance: Rs. {}, Current balance: Rs. {}"
# // check balance then return or else raise exception

# get_info() -> dict
# get_balance() -> float
# change_name(new_fist_name: str, new_last_name: str) -> bool
# change_phone_no(new_no: str) -> bool
# change_address(new_address: str) -> bool

###################### helpers.py
# def gen_acc_no(initials, no_count) -> str         // sbi-8888888800


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

# from helpers import gen_acc_no

# class Customer:
#     def __init__(self, bank_initials, first_name, last_name, ....):
#         self.first_name = first_name
#         self.last_name = last_name
#         self.account_no = gen_acc_no(bank_inital, 10)

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


# please check all arguments
# raise exceptions
# all functions should have docstring
# Customer.py
# Bank.py
# helpers.py

Scratchpad #16

# import sqlite3

# data = ("john", "doe", 25)
# data_list = [("jack", "smith", 35), ("jane", "doe", 33), ("jill", "mehta", 45)]

# conn = sqlite3.connect("bank.db")
# c = conn.cursor()

# # c.execute("CREATE TABLE customers (first_name TEXT, last_name TEXT, age INTEGER);")
# # c.execute("INSERT INTO customers VALUES ('salman', 'khan', 52);")


# query = """INSERT INTO customers VALUES (?, ?, ?);"""

# # c.execute(query, data)
# # c.executemany(query, data_list)
# for row in data_list:
#     print(f"Writing {row[0]} to database...")
#     c.execute(query, row)

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

# from pymongo import MongoClient

# client = MongoClient("mongodb://127.0.0.1:27017")

# db = client.bankapp2
# coll = db["customers"]

# doc = {"firstName": "John", "lastName": "Doe", "age": 25}
# docs = [
#     {"firstName": "Jack", "lastName": "Smith", "age": 34},
#     {"firstName": "Jill", "lastName": "Mehta", "age": 43},
#     {"firstName": "Jane", "lastName": "Webb", "age": 21},
# ]

# coll.insert_one(doc)
# coll.insert_many(docs)

# query = {"age": {"$gt": 30}}

# search_res = coll.find(query)

# for res in search_res:
#     print(res)

# # print(list(search_res))

# coll.delete_many({"age": {"$gt": 30}})

# client.drop_database("bankapp2")


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

# browser = webdriver.Chrome(
#     r"/home/rahul/Desktop/Class/Python/oct_31_2021_sundays/scratchpads/chromedriver"
# )

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

# search_box = browser.find_element_by_xpath(
#     "/html/body/ytd-app/div/div/ytd-masthead/div[3]/div[2]/ytd-searchbox/form/div[1]/div[1]/input"
# )
# search_box.click()
# sleep(1)
# search_box.send_keys("batman movie trailer", Keys.ENTER)
# sleep(30)

# video = browser.find_element_by_partial_link_text("THE BATMAN")
# sleep(1)
# video.click()
# sleep(30)

# browser.get()

# browser.close()


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

browser = webdriver.Chrome(
    r"/home/rahul/Desktop/Class/Python/oct_31_2021_sundays/scratchpads/chromedriver"
)

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

search_box = browser.find_element_by_xpath(
    "/html/body/div[1]/div[1]/div[1]/div[3]/div/div[1]/div/label/div/div[2]"
)
sleep(1)
search_box.click()
sleep(2)
search_box.send_keys("PYTHON SUN RS 24", Keys.ENTER)
sleep(2)

msg_box = browser.find_element_by_xpath(
    "/html/body/div[1]/div[1]/div[1]/div[4]/div[1]/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[2]"
)
sleep(1)
msg_box.click()
sleep(2)

for i in range(20):
    msg_box.send_keys(f"SPAM MESSAGE {i + 1}", Keys.ENTER)

sleep(20)

browser.close()


# class Bank:
#     def __init__(self):
#         self.total_customers = []

#     def create_customer(self):
#         cus = Customer()
#         self.total_customers.append(cus)
#         return


# sbi = Bank("")
# sbi.create_customer("Asdnakjsdnkjsad")